linux与windows通信

shuaiying 2008-01-09 11:15:26
在linux上用C编写循环服务器,在windows中用MFC建立客户端,相互间不能连接,客户端报告连接错误.在Linux下两者能通信,同样在windows下两者也能通信,为什么?
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuaiying 2008-01-10
  • 打赏
  • 举报
回复
windows下主要代码:
void CLCDlg::OnConnectServer()
{
// TODO: Add your control notification handler code here
createSock();
if(connect(sock,(struct sockaddr*)&serverAddr,sizeof(serverAddr)))
{
AfxMessageBox("connect error");
return ;
}
}

void CLCDlg::OnSend()
{
// TODO: Add your control notification handler code here
CString str="hello";
int len;
len=send(sock,str,sizeof(str),0);

}

DWORD CLCDlg::startScok()
{
serverAddr.sin_family=AF_INET;
serverAddr.sin_addr.s_addr=inet_addr("159.226.75.221");
serverAddr.sin_port=htons(5790);
return 1;
}

DWORD CLCDlg::createSock()
{
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock==INVALID_SOCKET)
{
AfxMessageBox("Wrong");
return -1;
}
return 1;
}

void CLCDlg::OnClose()
{
closesocket(sock) ;
}
*********************************************
Linux下主要代码:
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdio.h>
#define SERVER_PORT 5790
main()
{
int sockfd;
int connfd;
int namelen;
int n;
int bindflag;
struct sockaddr_in my_addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
{
fprintf(stderr,"socket error!\n");
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVER_PORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
bindflag=bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr));
if(bindflag<0)
{
fprintf(stderr,"bind error!\n");
exit(2);
}
if(listen(sockfd,2)<0)
{
fprintf(stderr,"listen error!\n");
exit(3);
}
namelen=sizeof(my_addr);
while(1)
{
connfd=accept(sockfd,(struct sockaddr*)&my_addr,&namelen);
if(connfd<0)
{
fprintf(stderr,"accept error!\n");
exit(4);
}
printf("ip\n");
if((n=fork())==0)
{
char buff[1024];
close(sockfd);
n=read(connfd,buff,1024);
printf("%s\n",buff);
close(connfd);
exit(0);
}
else if(n<0)
printf("Fork Error.\n");
close(connfd);
}
}
ckc 2008-01-10
  • 打赏
  • 举报
回复
2楼说的有一定道理,有可能是编译器在细节上不一致
captain_x 2008-01-10
  • 打赏
  • 举报
回复
windows下不用cstring,直接用char试试
captain_x 2008-01-09
  • 打赏
  • 举报
回复
可能是字节对齐的问题,导致数据不一致
超龄编码人 2008-01-09
  • 打赏
  • 举报
回复
代码发上来

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧