以下为linux作为客户端的程序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include<stdlib.h>
int main(){
//创建套接字
int sock = socket(AF_INET, SOCK_STREAM, 0);
//向服务器(特定的IP和端口)发起请求
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr)); //每个字节都用0填充
serv_addr.sin_family = AF_INET; //使用IPv4地址
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具体的IP地址
serv_addr.sin_port = htons(6000); //端口
int err=connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
if(err==-1)
{
printf("error\n");
}
else
{
printf("nice\n");
}
//读取服务器传回的数据
char readbuffer[100];
read(sock, readbuffer, sizeof(readbuffer)-1);
printf("Message form server: %s\n", readbuffer);
//给服务器发
char send[]="你也是";
write(sock,send,sizeof(send));
//关闭套接字
close(sock);
return 0;
}
Windows作为服务器
#include <stdio.h>
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib") //需要加载 ws2_32.dll Windows系统网络编程库
int main(){
//初始化 DLL库
WSADATA wsaData;
WSAStartup( MAKEWORD(2, 2), &wsaData);
//创建套接字
SOCKET servSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//绑定套接字
sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充
sockAddr.sin_family = PF_INET; //使用IPv4地址
sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具体的IP地址
sockAddr.sin_port = htons(6000); //端口
bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
//进入监听状态
listen(servSock, 20);
//接收客户端请求
SOCKADDR clntAddr;
int nSize = sizeof(SOCKADDR);
SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);
//向客户端发送数据
char *str = "Hello World!";
send(clntSock, str, strlen(str)+sizeof(char), NULL);
char re[100];
recv(clntSock,re,sizeof(re),NULL);
//关闭套接字
closesocket(clntSock);
closesocket(servSock);
//终止 DLL 的使用
WSACleanup();
return 0;
}
先启动Windows服务器,然后启动Ubuntu客户端运行结果如下:

请问怎么解决连接失败这个问题呢?