面向连接的通信
1.服务器api函数
步骤:第一步是用socket将给定的协议的套接字绑定到一直的名称上,通过调用bind api来完成
第二步是将套接字设为监听模式,调用listen函数
第三步是建立连接,调用accept来接受连接。
bind函数定义:
int bind(SOCKET s, //需要套接字
const struct sockaddr FAR* name, //需要sockaddr结构
int namelen //sockaddr结构长度
);
listen函数定义:
int listen(SOCKET s,
int backlog );
accept函数定义:
SOCKET accept(SOCKET s,
struct sockaddr FAR* addr,
int FAR* addrlen);
服务器程序完整代码:
#include<winsock2.h>
void main(void)
{
WASADATA wsaData;//初始化winsock WSAStartuph函数所需
SOCKET ListeningSocket; bind listen accept 函数均需
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int Port=5150; //SOCKET_IN结构中需要端口号
WSAStartup(MAKEWORD(2,2),&wsaData);
//创建套接字
ListeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
初始化SOCKET_IN结构体
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(Port);
ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
使用bind函数来绑定套接字
bind(ListeningSocket,&ServerAddr,sizeof(ServerAddr));
//监听客户及连接
listen(ListeningSocket,5);
//连接到达时接受连接
NewConnection=accept(ListeningSocket,&ClientAddr,sizeof(ClientAddr));
//关闭连接
closesocket(NewConnection);
closesocket(ListeningSocket);
WSAClenup();
}