c++ socket问题(新手向)
我用sockettool建立了个服务器:198.162.0.100(10000)structsockaddr_in{structin_addrsin_addr;short...
我用sockettool建立了个服务器:198.162.0.100(10000)
struct sockaddr_in{
struct in_addr sin_addr;
short sin_family;
unsigned short sin_port;
char sin_zero[8];
};
struct in_addr{
union{
struct {
u_long S_addr;
}S_un;
};
};
sockaddr_in addr;
in_addr in_add;
CSocket sock;
addr.sin_family = AF_INET;
addr.sin_port = htons(10000);
addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.100");
BOOL a = sock.Bind((struct sockaddr*)&addr, sizeof(addr));
sock.Listen(5);
printf("%d", a);
getchar();
return 0;
输出为0.
将 htons换成0.0.0.0输出还是为0.
究竟是怎么回事。 展开
struct sockaddr_in{
struct in_addr sin_addr;
short sin_family;
unsigned short sin_port;
char sin_zero[8];
};
struct in_addr{
union{
struct {
u_long S_addr;
}S_un;
};
};
sockaddr_in addr;
in_addr in_add;
CSocket sock;
addr.sin_family = AF_INET;
addr.sin_port = htons(10000);
addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.100");
BOOL a = sock.Bind((struct sockaddr*)&addr, sizeof(addr));
sock.Listen(5);
printf("%d", a);
getchar();
return 0;
输出为0.
将 htons换成0.0.0.0输出还是为0.
究竟是怎么回事。 展开
1个回答
展开全部
你说的输出指的是输出printf a吧?可能你并没有理解socket通信的基本流程。
在socket通信中,服务端需要做的几件事是:
创建socket->设置端口->绑定端口(bind)->监听端口(listen)->接收连接请求(accept)->创建新的网络通信线程->继续监听端口
客户端需要做的几件事:
创建socetk->获得服务端IP和端口->连接服务端->连接成功开始发送/接收数据
你上面的代码看起来是把服务端和客户端需要做的工作弄混乱了。服务端不需要绑定本机IP,只需要知道本机端口。客户端不需要进行监听,直接使用服务器端IP端口进行连接就行。建议你看一下最基本的服务端、客户端使用tcp网络的相关资料。
在socket通信中,服务端需要做的几件事是:
创建socket->设置端口->绑定端口(bind)->监听端口(listen)->接收连接请求(accept)->创建新的网络通信线程->继续监听端口
客户端需要做的几件事:
创建socetk->获得服务端IP和端口->连接服务端->连接成功开始发送/接收数据
你上面的代码看起来是把服务端和客户端需要做的工作弄混乱了。服务端不需要绑定本机IP,只需要知道本机端口。客户端不需要进行监听,直接使用服务器端IP端口进行连接就行。建议你看一下最基本的服务端、客户端使用tcp网络的相关资料。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询