标签:ref 需要 div word ros 虚拟机 ndt ges 连接
已经很久没有在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();
客户端的流程很简单。
socket
函数产生一个打开的socket
文件描述符。connect
函数去连接服务端read/recv
等读文件函数从服务端接收数据,使用write/send
等写文件的函数向服务端发送数据上面是典型的TCP
编程流程,如果是UDP
的话不需要connect
去连接服务端直接使用sendto
函数来发送数据,使用recvfrom接收来自服务器的数据
服务器端的流程比客户端稍微复杂一点
socket
打开一个socket句柄bind
来绑定socket句柄到一个网口的某个端口listen
来设置(启用)监听accept
来等待客户端的连接上面是典型的TCP
编程流程,如果是UDP
的,那么不需要3,4
这两部,直接使用recvfrom
来接收客户端发过来的数据即可。
我这里没有写TCP
的,因为都是局域网内,就简单的写了个。
这里是在虚拟机里面测试的截图,代码见最后。
标签:ref 需要 div word ros 虚拟机 ndt ges 连接
原文地址:http://www.cnblogs.com/findumars/p/6253717.html