
#include<winsock2h>
#pragma comment (lib,"ws2_32")
int main(int argc, char argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
/struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
/
sockaddr_in socketaddr;
socketaddrsin_family = PF_INET;
socketaddrsin_addrS_unS_addr = inet_addr("127001");
socketaddrsin_port = htons(827);
bind(s, (SOCKADDR)&socketaddr, sizeof(SOCKADDR));
listen(s,1);
SOCKADDR clientAddr;
int nSize = sizeof(SOCKADDR);
SOCKET clientSock;
clientSock = accept(s,(SOCKADDR)&clientAddr,&nSize);
send(clientSock,"hello world!\r\n",strlen("hello world!\r\n")+sizeof(char),NULL);
closesocket(clientSock);
closesocket(s);
WSACleanup();
return 0;
}
这是修改后的代码。兄弟,打字认真点,都是单词拼写错误!!
端口被占用、防火墙阻止连接、服务端程序出错。
1、端口被占用:服务端需要监听特定的端口,如果该端口已经被占用,服务端就无法启动。可以通过netstat命令查看当前端口的占用情况,然后选择一个没有被占用的端口进行服务端的监听。
2、防火墙阻止连接:防火墙可能会阻止应用程序的连接,导致服务端启动失败。可以检查防火墙的设置,将测试工具的端口设置为允许连接。
3、服务端程序出错:服务端程序可能存在代码或配置错误,导致无法启动。可以检查服务端程序的日志或者debug信息,找出错误原因。
首先你要确保两个机器能互相ping通(网络确实是畅通的才可以!)
你服务端绑定的IP估计是用的127001
//绑定IP和端口
sockaddr_in sin;
sinsin_family = AF_INET;
sinsin_port = htons(8888);
sinsin_addrS_unS_addr = INADDR_ANY; //这里!!
或者,你的客户端使用的是127001
sockaddr_in serAddr;
serAddrsin_family = AF_INET;
serAddrsin_port = htons(8888);
serAddrsin_addrS_unS_addr = inet_addr("127001"); //127001是本机的一个loopback地址,你应该写成对端的SERVER的实际ip
或者
SERVER端的机器上有防火墙挡住了你的应用访问。
两个方面,一个是程序代码上的,一个是机器环境上的。自己多方面检查一下吧。
以上就是关于C++TCP通信服务端代码问题全部的内容,包括:C++TCP通信服务端代码问题、tcpupd测试工具使用新建服务端但启动提示socket错误、c++编写的tcp协议客户端和服务器程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)