有没有试过用Windows作为客户端,而linux作为服务器的socket开发。

alexjoan 2002-10-18 12:08:14
http://www.tjpcn.com
alexlee@tjpcn.com
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
whydoyoucare 2002-10-21
  • 打赏
  • 举报
回复
不明白你什么意思!
服务器和客户机运行什么平台跟通信有什么关系?只要你定义好双方通信的接口,在linux上开发不过是换一些函数名的问题而已!
Hanzo 2002-10-18
  • 打赏
  • 举报
回复
???
cppnet 2002-10-18
  • 打赏
  • 举报
回复
up
lookamei 2002-10-18
  • 打赏
  • 举报
回复
这种跨平台的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();

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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