Socket :sever
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
int main()
{
WORD ver = MAKEWORD(2, 2);
WSADATA dat;
WSAStartup(ver, &dat);
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in sin = {};
sin.sin_family = AF_INET;
sin.sin_port = htons(4567);
sin.sin_addr.S_un.S_addr = INADDR_ANY;
if (bind(sock, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR) {
printf("绑定失败..\n");
}
else {
printf("绑定成功..\n");
}
if (listen(sock, 5) == SOCKET_ERROR) {
printf("监听失败..\n");
}
else {
printf("监听成功..\n");
}
sockaddr_in clientAddr;
int AddrLength = sizeof(sockaddr_in);
SOCKET cSOCK = INVALID_SOCKET;
cSOCK = accept(sock, (sockaddr*)&clientAddr, &AddrLength);
if (cSOCK == INVALID_SOCKET) {
printf("接收失败....\n");
}
else {
printf("接收成功....\n");
}
char recvbuf[128];
while (true) {
int len = recv(cSOCK, recvbuf, 128, 0);
if (len <= 0) {
printf("客户端已经退出....\n");
break;
}
printf("受到数据%s:\n", recvbuf);
if (0 == strcmp(recvbuf, "getname")) {
char buf[] = "姓名是陈朋\n";
printf("回复%s\n", buf);
send(cSOCK, buf, strlen(buf) + 1, 0);
}
else if (0 == strcmp(recvbuf, "getage")) {
char buf[] = "年龄是22\n";
printf("回复%s\n", buf);
send(cSOCK, buf, strlen(buf) + 1, 0);
}
else {
char buf[] = "你想干什么???\n";
printf("回复%s\n", buf);
send(cSOCK, buf, strlen(buf) + 1, 0);
}
}
printf("退出,任务结束");
getchar();
closesocket(sock);
WSACleanup();
}