SOCKET编程入门求指导

runerback runerback 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在网上搜到的 简单的 C++ SOCKET编程 ---基于TCP/IP协议 ,照着写下来,客户端发消息服务端没反应,也不知道连没连到服务器,不明真相。
复制代码有点多,不过为了知道具体原因我还是硬着头皮粘贴上来吧
客户端:
void Main::CreateSocket(void)
{
WORD myVersionRequest = MAKEWORD(2, 2);
WSADATA wsaData;
int errorCode = WSAStartup(myVersionRequest, &wsaData);
if(errorCode)
{
printf("Socket Startup Failed: %d\n", GetLastError());
}
else if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)
{
printf("Socket Startup Failed: %d\n", GetLastError());
WSACleanup();
}
else
{
printf("Socket Startup successed\n");
}
}

void Main::Connect(void)
{
sockClient=socket(AF_INET, SOCK_STREAM, 0);
SOCKADDR_IN addr;
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(6000);

connect(sockClient, (SOCKADDR*)&addr, sizeof(SOCKADDR));
printf("Connected to server");
}

void Main::Send(char* str)
{
send(sockClient, str, strlen(str)+1,0);
printf("Sending \"%s\"...", str);
}

void Main::Disconnect(void)
{
closesocket(sockClient);
printf("Disconnected from server");
}

void Main::DestroySocket(void)
{
WSACleanup();
printf("Socket Destroyed\n");
}

调用方法:
int _tmain(int argc, _TCHAR* argv[])
{
Main client;
client.CreateSocket();
client.Connect();
while(1)
{
printf("\nEnter Message:\n");
char msg[100];
std::cin.getline(msg, 100);
client.Send(msg);
}
client.Disconnect();
client.DestroySocket();
return 0;
}


服务器:
void Main::CreateSocket(void)
{
WORD myVersionRequest = MAKEWORD(2, 2);
WSADATA wsaData;
int errorCode = WSAStartup(myVersionRequest, &wsaData);
if(errorCode || LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){
printf("Socket Startup Failed: %d\n", GetLastError());
}
printf("Socket Startup successed\n");
}

void Main::StartListen(void)
{
SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);
SOCKADDR_IN addr;
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addr.sin_port = htons(6000);
bind(serverSocket, (SOCKADDR*)&addr, sizeof(SOCKADDR));
listen(serverSocket, 1);
printf("Listening...\n");
listening = true;
SOCKADDR_IN clientAddr;
int len = sizeof(SOCKADDR);
while(listening)
{
SOCKET sockConn = accept(serverSocket, (SOCKADDR*)&clientAddr, &len);
char recvBuffer[100];
recv(sockConn, recvBuffer, strlen(recvBuffer)+1, 0);
printf("Received From Client: %s\n", recvBuffer);
closesocket(sockConn);
}
}

void Main::StopListen(void)
{
listening = false;
}

void Main::DestroySocket(void)
{
WSACleanup();
printf("Socket Destroyed\n");
}

调用方法:
int _tmain(int argc, _TCHAR* argv[])
{
Main server;
server.CreateSocket();
server.StartListen();
server.StopListen();
server.DestroySocket();

return 0;
}
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
runerback
网络编程 18,356 成员 64,161 内容