linux下的程序如何在windows下运行

linux下的程序如何在windows下运行... linux下的程序如何在windows下运行 展开
 我来答
wmesfj
2010-12-30 · TA获得超过1089个赞
知道小有建树答主
回答量:1545
采纳率:0%
帮助的人:1168万
展开全部
本质区别是这样的,linux下用的是伯克利socket,windows底下用的WinSocket.
两者其实是大同小异的,不同的地方在以下几点:
1 头文件不同,在linux下用到的关键头文件<sys/socket.h>
windows下用到的是 <Winsock2.h>

2 socket的初始化不一样,在windows下要有一个WSAStartup,而linux 下没有。

3 具体的细节不一样,linux下的c和windows下的c的一些语法有些出入,你自己找找。

下面我把windows下的socket通讯的最基本的结构给你,你对照着修改就可以了,一下的程序我调试了一下,编译过了。
客户端
#include <Winsock2.h>
#include <stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

char recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf("%s\n",recvBuf);
send(sockClient,"This is lisi",strlen("This is lisi")+1,0);

closesocket(sockClient);
WSACleanup();
}

服务器端
#include <Winsock2.h>
#include <stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

listen(sockSrv,5);

SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);

while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"来自服务器端",
inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf("%s\n",recvBuf);
closesocket(sockConn);
}
}
键盘雀跃
2010-12-30 · TA获得超过981个赞
知道小有建树答主
回答量:1546
采纳率:0%
帮助的人:484万
展开全部
找移植版,LINUX下的程序大多是自由软件,有源代码,可以自行编译。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
影Sun云
2010-12-30 · TA获得超过583个赞
知道小有建树答主
回答量:1324
采纳率:0%
帮助的人:696万
展开全部
这个兄弟真会开玩笑,两个系统内核都不一样,怎么能行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
teddymy
2010-12-30 · TA获得超过281个赞
知道小有建树答主
回答量:507
采纳率:0%
帮助的人:438万
展开全部
wine可以运行部分程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jewelseeker
2010-12-30
知道答主
回答量:18
采纳率:0%
帮助的人:10.1万
展开全部
在Windows中安装Cgwin或minGW软件即可实现linux中程序到Windows中移植。
Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。Cygwin移植工作在Windows NT、Windows 2000、Windows XP以及Windows Server 2003上比较好.
MinGW的库,可以跟Windows本地的MSVCRT库(Windows API)一起工作。MinGW占用内存、硬盘空间都比较少,能够链接到任意软件,但它对POSIX规范的实现没有Cygwin库完备。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式