导航
  • 主页
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux
  • 问答

用C编写Windows和Ubuntu进行TCP通讯程序遇到的问题

郝丽氦 湖南工业大学 2021-05-21 11:22:05
以下为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客户端运行结果如下:


请问怎么解决连接失败这个问题呢?
...全文
785 1 收藏 1
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
郝丽氦 05-21
已经找到问题出在哪了。
回复
发动态
发帖子
Linux/Unix社区
创建于2007-08-27

2.0w+

社区成员

Linux/Unix社区 应用程序开发区
申请成为版主
社区公告
暂无公告