双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

用winsocket编程遇到的问题?

seu2002 seu2002 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想在控制台下实现客户和服务器的相互通信。请大家帮忙解决下。
现在只做到了客户可以向服务器发送消息,代码如下:
服务器端:
#pragma comment(link,"WS2_32.lib")

#include "winsock2.h"
#include "iostream.h"

const int BUFFER_LEN=2048;

void main(void)
{
WSADATA wsadata;
SOCKET ServerSocket;
SOCKET ClientSocket;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int Port;
cout<<"------------------------------------------------------------------------------\n"
<<" TCP/IP Demo \n"
<<"------------------------------------------------------------------------------\n"
<<"请输入开放的端口号:\n";
cin>>Port;
char buffer[BUFFER_LEN];
char RemoteIp[16];
char * pIP=RemoteIp;
WSAStartup(MAKEWORD(2,2),&wsadata);
ServerSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(Port);
ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
bind(ServerSocket,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr));
listen(ServerSocket,5);
int iClentAddrLen=sizeof(ClientAddr);
ClientSocket=accept(ServerSocket,(SOCKADDR*)&ClientAddr,&iClentAddrLen);
if (ClientSocket!=INVALID_SOCKET) {
pIP=inet_ntoa(ClientAddr.sin_addr);
cout<<"来自"<<pIP<<"的用户与服务器连接建立!\t"<<"端口:"<<Port<<endl;
}
while (recv(ClientSocket,buffer,BUFFER_LEN,0)) {
cout<<"来自"<<pIP<<"的用户说:\n"<<buffer<<endl;
}
cout<<"用户"<<pIP<<"已退出"<<endl;
closesocket(ServerSocket);
closesocket(ClientSocket);
WSACleanup();
}
客户端:
#pragma comment(link,"WS2_32.lib")

#include "winsock2.h"
#include "iostream.h"
#include "string.h"

const int BUFFER_LEN=2048;
void main(void)
{
WSADATA wsaData;
SOCKET ClientSocket;
SOCKADDR_IN ServerAddr;
int Port,info;
char buffer[BUFFER_LEN];
char ex[5]="exit";
char ip[15];
cout<<"-------------------------------------------------------------------------------\n"
<<" TCP/IP Demo \n"
<<"-------------------------------------------------------------------------------\n"
<<" 使用方法:输入一行字符串,以回车结束 \n"
<<" 输入'exit'退出 \n"
<<"-------------------------------------------------------------------------------\n"
<<"请输入服务器IP:\n";
cin.getline(ip,15);
cout<<"请输入服务器端口号:\n";
cin>>Port;
WSAStartup(MAKEWORD(2,2),&wsaData);
ClientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(Port);
ServerAddr.sin_addr.s_addr=inet_addr(ip);
info=connect(ClientSocket,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr));
if (info!=SOCKET_ERROR) {
cout<<"连接已建立!"<<endl;
}
else cout<<"无法连接到服务器!"<<endl;
while (!cin.eof()) {
cin.getline(buffer,BUFFER_LEN);
if (!strcmp(buffer,ex)) {
break;
}
send(ClientSocket,buffer,BUFFER_LEN,0);
}
closesocket(ClientSocket);
WSACleanup();
}
...全文
评论 9
收藏 已收藏
分享
返回顶部
seu2002
C++ 语言 65,214 成员 250,514 内容