有没有试过用Windows作为客户端,而linux作为服务器的socket开发。 http://www.tjpcn.com[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种跨平台的socket通讯其实跟统一平台的通讯程序原理完全相同。但有几个问题你得首先确定:第一,你想用TCP还是UDP协议?第二,同步通讯还是异步通讯?第三,通讯是长连接还是短连接?在此提供一个tcp的同步短连接通讯server和client的程序框架:server.c(in Linux)===========================...(some include files here)main(){ ...(fork两次使得该进程变成守护进程) iSocket=socket(AF_INET, SOCK_STREAM, 0); bind(iSocket, (struct sockaddr *)&stSvrAddr, sizeof(struct sockaddr_in)); listen(iSocket, 10); for(;;) { iConnSocket=accept( iSocket, (struct sockaddr*) &stSvrAddr,&iSvrAddr_len ); if(iConnSocket>0) { iChildPid=fork(); if( iChildPid == 0) // child process { close(iSocket); recv(iConnSocket, ...); // 接收数据 .... // 插入对收到数据的处理 send(iConnSocket, ...); // 发送响应 close(iConnSocket); // 结束一次连接 } else if(iChildPid > 0) // parent process { close(iConnSocket); //父进程继续侦听 } } } // end for}client.cpp(in Visual C++)========================= CSocket sockCli; char sRecv[200]; BOOLEAN ab; if(!AfxSocketInit()) { AfxMessageBox("WindowsSocket initial failed!"); return; } sockCli.Create(); ab=sockCli.Connect(ServerIP, ServerPORT); if(ab==FALSE) { AfxMessageBox("FAIL"); return; } sockCli.Send("Heoooo.", 20, 0); memset(sRecv, 0x00, sizeof(sRecv)); sockCli.Receive(sRecv, 128, 0); AfxMessageBox(sRecv); sockCli.Close(); 不明白你什么意思!服务器和客户机运行什么平台跟通信有什么关系?只要你定义好双方通信的接口,在linux上开发不过是换一些函数名的问题而已! 求助 用命令行编译libxml时发现zlib与默认库冲突 150分求助:驱动级键盘模拟程序,用_outp函数 一个超难问题 编译时为什么会出现库文件错误? 如何改变现有MFC工程的工程名字 真样将int型转换成CString型? CString型数据怎么加到树型控件上? DirectSound流式Buffer一直想不通的问题 二维图片进行三维重建的问题 VBscript跟VB是什么关系?(内空) 如何通过COM组件激活外部程序 在一个MFC正规的Dll中,可否重载Run函数以截获windows消息并处理?
但有几个问题你得首先确定:
第一,你想用TCP还是UDP协议?
第二,同步通讯还是异步通讯?
第三,通讯是长连接还是短连接?在此提供一个tcp的同步短连接通讯server和client的程序框架:
server.c(in Linux)
===========================
...(some include files here)
main()
{
...(fork两次使得该进程变成守护进程)
iSocket=socket(AF_INET, SOCK_STREAM, 0);
bind(iSocket, (struct sockaddr *)&stSvrAddr,
sizeof(struct sockaddr_in));
listen(iSocket, 10);
for(;;)
{
iConnSocket=accept( iSocket, (struct sockaddr*)
&stSvrAddr,&iSvrAddr_len );
if(iConnSocket>0)
{
iChildPid=fork();
if( iChildPid == 0) // child process
{
close(iSocket);
recv(iConnSocket, ...); // 接收数据
.... // 插入对收到数据的处理
send(iConnSocket, ...); // 发送响应
close(iConnSocket); // 结束一次连接
}
else if(iChildPid > 0) // parent process
{
close(iConnSocket); //父进程继续侦听
}
}
} // end for
}
client.cpp(in Visual C++)
=========================
CSocket sockCli;
char sRecv[200];
BOOLEAN ab; if(!AfxSocketInit())
{
AfxMessageBox("WindowsSocket initial failed!");
return;
} sockCli.Create(); ab=sockCli.Connect(ServerIP, ServerPORT);
if(ab==FALSE)
{
AfxMessageBox("FAIL");
return;
}
sockCli.Send("Heoooo.", 20, 0); memset(sRecv, 0x00, sizeof(sRecv));
sockCli.Receive(sRecv, 128, 0);
AfxMessageBox(sRecv); sockCli.Close();
服务器和客户机运行什么平台跟通信有什么关系?只要你定义好双方通信的接口,在linux上开发不过是换一些函数名的问题而已!