一.本篇概况
本篇文章主要以C语言为主,通过C语言中所设定的函数以及环境来将网络通讯的服务端进行搭建。注:本篇并未涉及服务端与客户端之间的收发数据。
二.代码实现
1.初始化套接字库:
if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) //初始化套接字库
{
printf("WSAStartup() error\n");
return 0;
}
2.创建套接字:
hServSock = socket(PF_INET, SOCK_STREAM, 0); //创建套接字
if(hServSock == INVALID_SOCKET)
{
printf("socket() error\n");
return 0;
}
3.绑定套接字:
其中在绑定过程,我们需要先设置好服务端的IP地址与端口号,确保客户端能通过这两个元素与服务端进行连接。
/设置端口号与IP地址
memset(&servAddr, 0 ,sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
servAddr.sin_port = htons(9070);
if(bind(hServSock, (SOCKADDR*) &servAddr, sizeof(servAddr)) == SOCKET_ERROR) //绑定套接字
{
printf("bind() error\n");
return 0;
}
4.监听套接字:
if(listen(hServSock, 5) == SOCKET_ERROR) //监听套接字
{
printf("listen() error\n");
return 0;
}
5.与客户端连接:
当实现监听套接字后,客户端一旦进行连接,服务端会马上得知并可以从客户端那接收客户端所发送的数据。
nClnAddr = sizeof(clnAddr);
hClnSock = accept(hServSock, (SOCKADDR*) &clnAddr, &nClnAddr); //接收客户端请求
if(hClnSock == INVALID_SOCKET)
{
printf("accept() error\n");
return 0;
}
6.数据设置:
当然在进行搭建前,我们还需要设置一些参数,用于搭建过程中使用。
WSADATA wsaData; //套接字库
SOCKET hServSock; //服务器套接字
SOCKET hClnSock; //客户端套接字
SOCKADDR_IN servAddr, clnAddr; //服务端与客户端地址
int nClnAddr; //
char *buff = "Hello"; //设置服务器往客户端发送数据
7.服务端往客户端发送数据:
当建立好连接后,并不意味着只能客户端往服务端发送数据,当然服务端也能往客户端进行发送数据。
send(hClnSock, buff, 5, 0); //发送数据
此处以“Hello”为例。
三.实现效果: