freedom_wings5
2016-03-05 04:05c++的socket编程,无客户端连接accept却不阻塞,直接返回了,怎么解决
以下是服务端的代码:
#include "stdafx.h"
#include "winsock2.h"
#include "iostream"
#pragma comment (lib,"ws2_32")
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsadata;
WSAStartup(MAKEWORD(2, 2), &wsadata);
cout << "开始创建套接字\n";
SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
struct sockaddr_in saddrin;
saddrin.sin_addr.S_un.S_addr = inet_addr("INADDR_ANY");
saddrin.sin_port = htons(9100);
cout << "开始绑定\n";
bind(s, (sockaddr *)&saddrin, sizeof(saddrin));
cout << "开始监听\n";
listen(s, SOMAXCONN);
struct sockaddr_in sClient;
int num = sizeof(sClient);
SOCKET client= accept(s, (sockaddr *)&sClient, &num);
if (client)
{
cout << "已接受来自客户端的连接\n";
cout << sClient.sin_port<<'\n';
cout<< inet_ntoa(sClient.sin_addr)<<'\n';
char msg[MAXBYTE] = { 0 };
recv(client, msg, sizeof(msg), 0);
cout << msg;
strcpy_s(msg, "this is a reply for the test\n");
send(client, msg, strlen(msg) + sizeof(char), 0);
cout << "已发送消息\n";
}
else
{
cout << "无客户端的连接";
}
system("PAUSE");
return 0;
}
启动了服务端,客户端都没启动,就直接执行完返回了,accept那里不是应该阻塞,等待客户端的连接的吗?即使同时启动客户端和服务端也是这样的结果,请问应该怎么解决?
- 点赞
- 回答
- 收藏
- 复制链接分享
4条回答
为你推荐
- c++,socket编程实现简易聊天系统,客户端一直连不上服务端,connect返回错误10014
- c++
- 1个回答
- boost异步通信,async_read_some始终接收不到数据
- c++
- 2个回答
- socket双向通信,为什么服务器只能接收一次客户端发送的消息
- 阻塞
- 双向通信
- socket通信
- 0个回答
- C++ 实现TCP文件传输时出现问题
- 文件传输
- tcp
- 服务器
- c++
- 3个回答
- 为什么c++11 thread多线程造成 socket 中accept函数不阻塞?
- 2个回答
换一换