socket 笔记(一)
#include "stdafx.h"
#include "WINSOCK2.H" #pragma comment(lib,"WS2_32.lib")
#define BUF_SIZE 64 //缓冲区大小
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsd;//存储WSAStartup返回的数据windows socket数据。
SOCKET server; //服务器套接字
SOCKET client; //客户端套接字
int retVal;
char buf[BUF_SIZE]; //初始化动态库套接字
//WSAStartup Winsock初始化
ZeroMemory(buf, BUF_SIZE);
if (WSAStartup(MAKEWORD(, ), &wsd) != )
{
printf("WSAStartup failed 1/n");
return ;
} //创建套接字
//AF_INET IPV4套接字类型
//AF_INET6 IPV6套接字类型
//AF_UNIX Unix套接字类型
//SOCK_STREAM TCP协议
//SOCK_DGRAM UDP协议
//SOCK_RAW 特殊的IPV4,可以处理ICMP、IGMP等网络报文
//INVALID_SOCKET socket创建失败
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == server)
{
printf("socket failed !/n");
WSACleanup();
return -;
} //服务器套接地址
//sin_family 协议簇
//sin_addr 地址
//htonl()--"Host to Network Long"
//ntohl()--"Network to Host Long"
//htons()--"Host to Network Short"
//ntohs()--"Network to Host Short"
//INADDR_ANY inet_addr("0.0.0.0")监听所有网络
//SOCKADDR_IN SOCKADDR 网络地址
SOCKADDR_IN addserver;
addserver.sin_family = AF_INET;
addserver.sin_port = htons();
addserver.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //绑定套接字
retVal = bind(server, (const struct sockaddr*)&addserver, sizeof(SOCKADDR_IN));
if (SOCKET_ERROR == retVal)
{
printf("bind failed !/n");
closesocket(server);
WSACleanup();
return false;
} //监听套接字
retVal = listen(server, );
if (SOCKET_ERROR == retVal)
{
printf("listen failed!/n");
closesocket(server);
WSACleanup();
return false;
} //接受客户端数据
//accept 建立链接 返回一个SOCKET类型的值,表示接收到的套接字的描述符,否则返回INVALID_SOCKET _In_ SOCKET s,
sockaddr_in addrClient;
int addrClintlen = sizeof(addrClient);
client = accept(server, (sockaddr FAR*)&addrClient, &addrClintlen);
{
printf("accept failed !/n");
closesocket(server);
WSACleanup();
return -;
} //接收客户端套接字
retVal = recv(client, buf, BUF_SIZE, );
if (SOCKET_ERROR == retVal)
{
printf("recv failed !/n");
closesocket(server);
closesocket(client);
WSACleanup();
return false;
} //退出程序
printf("Recv From Client:%s/n", buf);
retVal = send(client, "Hello Word!", strlen("Hello word!"), );
if (SOCKET_ERROR == retVal)
{
printf("send failed !/n");
closesocket(server);
closesocket(client);
WSACleanup();
return false;
}
closesocket(server);
closesocket(client);
WSACleanup();
return ;
}
socket 笔记(一)的更多相关文章
- iOS socket 笔记
ios 客服端: 下载 AsyncSocket 开发框架,拖到项目中 //建立 #import "ViewController.h" #import <sys/socket. ...
- socket笔记
参考: http://www.cnblogs.com/dolphinX/p/3460545.html http://www.cnblogs.com/wei2yi/archive/2011/03/23/ ...
- linux c socket笔记 -服务端
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...
- C# Socket笔记
看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句.(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是 ...
- 操作socket笔记
网络编程 1.tcp协议 #tcpserver #单纯一对一发 tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建tcp套接字 参 ...
- TCP IP SOCKET 笔记
网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...
- tcp/ip http socket笔记
1.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输 HTTP是应用层协议,主要解决如何包装数据 2.TCP连接的三次握手 第一次握手:客户端发送syn包到服务器,并进入SYN_SEND状态 ...
- C# Socket编程笔记(转)
C# Socket编程笔记 http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html TCP Socket:Server 端连接步骤: ...
- Android Socket编程学习笔记
http://blog.csdn.net/eyu8874521/article/details/8847173 度娘给出的描述:通常也称作"套接字",用于描述IP地址和端口,是一个 ...
随机推荐
- SQL Search
Press TAB to expand wildcard tab键之后,会自动展开,直接枚举表中所有的字段 根据名字查找存储过程,发现找不到 原因是,本地是一个备份库.服务器上通过sql source ...
- COGS 577 蝗灾 线段树+CDQ分治
第一次写cdq分治 感谢hhd<y 这20亿对CP的指导(逃) 其实 就是 递归看左半部分对右半部分的贡献 (树状数组写挂了--临时改的线段树[大写的尴尬]) //By SiriusRen ...
- AIX 系统补丁升级步骤
AIX 系统补丁升级步骤 1.升级之前建议备份 rootvg (推荐) # smit mksysb 2.检查系统版本号 # oslevel -r 3.找到补丁光盘或者下载补丁,上传到服务器 ...
- Pycharm在Ubuntu14.04中的基本使用指南
前几天给大家分享了:如何在VMware虚拟机中安装Ubuntu14.04系统.今天给大家分享一下在Ubuntu14.04中如何简单的使用Pycharm.1.启动Pycharm,将进入Pycharm的启 ...
- 如何批量ping地址查看网络是否畅通
测试环境搬迁后,需要批量去ping所有机器的IP,看网络是否畅通 测试思路: [weblogic@pays03pre_BankVerify luyantest]$ ping -c 1 172.29.1 ...
- unzip---解压缩“.zip”压缩包。
unzip命令用于解压缩由zip命令压缩的“.zip”压缩包. 语法 unzip(选项)(参数) 选项 -c:将解压缩的结果显示到屏幕上,并对字符做适当的转换: -f:更新现有的文件: -l:显示压缩 ...
- 51nod 01背包
#include<cstdio> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i ...
- MongoDB + node-mongoskin简单演示样例
特点 无模式 MongoDB 中的每一条文档,都是一个 JSON 对象,因此你无需提前定义一个集合的结构,集合中的每一个文档也能够有不同的结构. 异步写入 MongoDB 默认全部的写操作都是『不安全 ...
- 绕过open_basedir读文件脚本
绕过open_basedir读文件脚本 2016年11月13日 01:28:21 阅读数:1221 参加了一场2016年的sycsec感觉又学到不少东西 废话不多说,首先啥是open_basedir? ...
- Apple iMac性能基准测试
这里我要向大家介绍的一款苹果操作系统下的性能测试软件名叫GeekBench,是加拿大PrimateLabs公司出品. 下载地址:http://www.primatelabs.ca/geekbench/ ...