用winsocket编程遇到的问题?

seu2002 2005-05-20 09:11:54
我想在控制台下实现客户和服务器的相互通信。请大家帮忙解决下。
现在只做到了客户可以向服务器发送消息,代码如下:
服务器端:
#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();
}
...全文
145 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wonker 2005-05-21
  • 打赏
  • 举报
回复
我也在用c写关于socket的程序
用pop3协议连接126邮箱
到时候我们可以交流一下 啊
zjlang 2005-05-21
  • 打赏
  • 举报
回复
楼主想法独特。。。呵呵
seu2002 2005-05-21
  • 打赏
  • 举报
回复
我现在的这两个程序只能实现Client发消息,Server收消息。想实现Client收消息,Server发消息。在一个程序里面。把代码贴出来是想避免问得太没有针对性,没别的意思
seu2002 2005-05-21
  • 打赏
  • 举报
回复
绝对没有show的意思 我只是想在客户端同时实现收发功能。昨天看到每人回复,就自己乱写了几句。呵呵 请大家谅解
TomDebug 2005-05-21
  • 打赏
  • 举报
回复
楼主在show 吗?
没有高懂你啥子问题?
seu2002 2005-05-21
  • 打赏
  • 举报
回复
想把两个做到一起啊
seu2002 2005-05-20
  • 打赏
  • 举报
回复
nnd 刚在网上和同学测试了一下 双方都开个srever和client 就可以实现聊天了 就是比较占资源一点 呵呵 反正随便玩玩
seu2002 2005-05-20
  • 打赏
  • 举报
回复
对啊 就是想两个都能实现,而且可以同时运行,像QQ一样。考虑了一天,没辙啊
lbing7 2005-05-20
  • 打赏
  • 举报
回复
具体是帮什么/?

帮你实现服务器向客户端发消息/?

不会哦,你都写了

还会问?

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧