windows下的socket网络编程
2015-07-01 15:13
579 查看
windows下的socket网络编程
windows下的socket网络编程clinet.c 客户端
server.c 服务器端
UDP通信的实现
代码如下
已经很久没有在windows下编程了,这次因为需要做一个跨平台的网络程序,就先写了个简单的
winSocket网路通信的例子,以便以后用到的时候有个参考。
windows下使用
winsock编程与
linux/unix的区别在于windows下需要先有一个
初始化的操作,结束的时候需要一个
清理的操作。还有windows下编译的时候需要连接
ws32_lib库。
大致过程如下
1、初始化
/*加载Winsock DLL*/
WSADATA wsd;
if (WSAStartup(MAKEWORD(2 , 2) , &wsd) != 0) {
printf("Winsock 初始化失败!\n");
return 1;
}
2、socket相关函数调用
socket(...)
bind(...)
listen(...)
connect(...)
accept(...)
send/sendto
recv/recvfrom
3、清理
WSACleanup();
clinet.c 客户端
客户端的流程很简单。1、先是使用
socket函数产生一个打开的
socket文件描述符。
2、使用
connect函数去连接服务端
3、使用
read/recv等读文件函数从服务端接收数据,使用
write/send等写文件的函数向服务端发送数据
上面是典型的
TCP编程流程,如果是
UDP的话不需要
connect去连接服务端直接使用
sendto函数来发送数据,使用recvfrom接收来自服务器的数据
server.c 服务器端
服务器端的流程比客户端稍微复杂一点1、调用
socket打开一个socket句柄
2、调用
bind来绑定socket句柄到一个网口的某个端口
3、调用
listen来设置(启用)监听
4、调用
accept来等待客户端的连接
上面是典型的
TCP编程流程,如果是
UDP的,那么不需要
3,4这两部,直接使用
recvfrom来接收客户端发过来的数据即可。
UDP通信的实现
我这里没有写TCP的,因为都是局域网内,就简单的写了个。
这里是在虚拟机里面测试的截图,代码见最后。
extern int main_client(int , char**); extern int main_server(int , char**); int main(int c , char** v) { if (c == 3) { main_client(c , v); } else { main_server(c , v); } return 0; }
查看 test 代码
相关文章推荐
- HttpClient之初步认识与使用1
- Easy Basic HTTP authentication with Tornado
- CentOS 配置网络环境
- 安装 PHP 5.4 成功 https://webtatic.com/packages/php54/
- TCP连接建立过程中为什么需要“三次握手”
- angularjs 信息链接 转摘自:http://www.zhihu.com/question/27427447
- RTP-RTCP-RTSP协议的区别与联系
- 网络故障诊断之法
- 负载均衡器&http正向代理
- 在AIX上运行RAC时网络方面的一些最佳经验
- 开源-负载均衡&http正向代理器
- TCP header
- 谷歌Volley网络框架讲解——第一篇
- 谷歌Volley网络框架讲解——Network及其实现类
- VMware、RHEL的网络配置
- 谷歌Volley网络框架讲解——网络枢纽
- linux网络:常用命令(一)
- accept and content-type http headers
- 谷歌Volley网络框架讲解——HttpStack及其实现类
- iOS开发 调试 网络限速