网络编程基础
简单的五步客服端
第一步 初始化
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData)
第二步 创建可与服务器连接的通道
SOCKET socketConnect = socket(AF_INET, SOCK_STREAM, 0);
if(socketConnect == INVALID_SOCKET)
{
printf(“socket() failed \n”);
WSACleanup();
return;
}
第三步 连接服务器
sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr( “IP 地址”);
clientService.sin_port = htons(5000);
if (connect(socketConnect, (SOCKADDR*)&clientService, sizeof(clientService)) != 0)
{
MessageBox(NULL, “connect() failed!”, “Error”, MB_OK);
WSACleanup();
return;
}
第四步 接收、发送信息 recv/send
第五步 关闭通道 closesocket
简单的七步服务器
第一步 初始化
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData)
第二步 创建侦听客户端连接的通道
SOCKET listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(listenSocket == INVALID_SOCKET)
{
printf(“socket() failed \n”);
WSACleanup();
return;
}
第三步 将侦听通道与ip绑定
sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr(“127.0.0.1”);
service.sin_port = htons(27015);
int iResult = bind(ListenSocket, (SOCKADDR *) & service, sizeof (service));
if (iResult == SOCKET_ERROR) {
wprintf(L"bind function failed with error %d\n", WSAGetLastError());
iResult = closesocket(ListenSocket);
if (iResult == SOCKET_ERROR)
wprintf(L"closesocket function failed with error %d\n", WSAGetLastError());
WSACleanup();
return ;
}
第四步 通道创建了,绑定了,可以侦听客户端的连接了
if (listen(ListenSocket, SOMAXCONN) == SOCKET_ERROR) {
wprintf(L"listen function failed with error: %d\n", WSAGetLastError());
}
第五步 获取来自客户端的连接通道
accept 函数提取套接字上挂起连接队列中的第一个连接。 然后,它会创建并返回新套接字的句柄.
成功完成 接受 后返回新的套接字句柄后,接受的套接字不能用于接受更多连接。
原始套接字保持打开状态,侦听新的连接请求
SOCKET acceptSocket = accept(listenSocket, NULL, NULL);
if (AcceptSocket == INVALID_SOCKET) {
wprintf(L"accept failed with error: %ld\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
} else {
wprintf(L"Client connected.\n");
}
第六步 知道了客户端的连接通道,针对该通道接收和发送数据 recv/send
char szBuf[2048] = “”;
recv(acceptSocket , szBuf, sizeof(CHATPACK), 0);
send(acceptSocket , (char *)nEvent, sizeof(int), 0);
第七步 断开连接
closesocket(acceptSocket );
closesocket(listenSocket);
WSACleanup();