您的位置:首页 > 理论基础 > 计算机网络

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 代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: