简单的网络编程,客户端的请求没反应

风泥 2012-08-13 10:33:47
服务器端:

#include <Winsock2.h>
#include <iostream>
using namespace std;
#pragma comment (lib, "ws2_32.lib")
int main()
{
WSADATA wd;
WSAStartup(0x0202, &wd);
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);//IPPROTO_IP);//0
sockaddr_in sa ={AF_INET, htons(5056), 0};//INADDR_ANY}; //绑定IP为0,代表忽略多IP
int i = bind(sock, (sockaddr *) &sa, sizeof(sa));
listen(sock, 5);
i = sizeof(sa);
cout << i << endl;
accept(sock,(sockaddr*)&sa, &i);
char buf[1000] = "220 welcome\n";
send(sock, buf, strlen(buf), 0);
i = recv(sock, buf, sizeof(buf), 0);
cout << i << " : " << buf << endl;
i = sizeof(sa);
i = WSAGetLastError();
closesocket(sock);
WSACleanup();
return 0;
}

客户端:

#include <Winsock2.h>
#pragma comment (lib, "ws2_32.lib")
#include <iostream>
using namespace std;
int main()
{
WSADATA wd;
WSAStartup(0x0202, &wd);
SOCKET client = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in sa1;
sa1.sin_family = AF_INET;
sa1.sin_port = htons(5056);
sa1.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
int k = connect(client, (sockaddr*)&sa1, sizeof(client));
cout << k << endl;
char buf[1000] = "220 hello\n";
int i = recv(client, buf, sizeof(buf), 0);
send(client, buf, strlen(buf), 0);
cout << i << " : " << buf << endl;
i = sizeof(sa1);
i = WSAGetLastError();
closesocket(client);
WSACleanup();
return 0;
}
...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fdl19881 2012-08-13
  • 打赏
  • 举报
回复
要使程序健壮,请多判断下函数返回值
比如socket,bind,connect,listen,send,recv的返回值是否正确
fdl19881 2012-08-13
  • 打赏
  • 举报
回复
int k = connect(client, (sockaddr*)&sa1, sizeof(client));
应该是
int k = connect(client, (sockaddr*)&sa1, sizeof(sa1));
modicum_lf 2012-08-13
  • 打赏
  • 举报
回复
connect 函数的第二个参数是服务器的地址信息

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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