免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1939 | 回复: 2
打印 上一主题 下一主题

[C] Sock编程,请教! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-23 01:45 |只看该作者 |倒序浏览

  1.       //Server:

  2.         serversocket=socket(AF_INET,SOCK_STREAM,0); //建立Socket链接

  3.         serveraddr.sin_family=AF_INET;
  4.         serveraddr.sin_port=htons(5555);
  5.         serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);
  6.   
  7.         //指定Socket的Local地址
  8.         bind(serversocket,(sockaddr   *)&serveraddr,sizeof(struct   sockaddr_in));
  9.         listen(serversocket,5); //设定监听状态,准备被连接

  10.         int   size=sizeof(struct   sockaddr_in);

  11.         //接受某一 Socket 的连接要求,以完成Socket 的连接
  12.         newsocket=accept(serversocket,(sockaddr   *)   &clientaddr,&size);

  13.         //Socket 接收
  14.         recv(newsocket,buffrecv,100,0);

  15.         printf( "receive:\n ");
  16.         printf( "%s ",buffrecv);
复制代码


  1.         //client:

  2.         char   buffsend[100]= "测试测试测试!";
  3.         serveraddr.sin_family   =   AF_INET;
  4.         serveraddr.sin_port   =   htons(5555);        
  5.         serveraddr.sin_addr.s_addr   =   inet_addr( "127.0.0.1 ");
  6.         //Connect:要求连接 TCP Socket 到指定的对方
  7.         int   result=connect(clientsocket,(SOCKADDR   *)&serveraddr,sizeof(serveraddr));
  8.         Sleep(2000);

  9.         if(result==-1)
  10.         {
  11.                 printf( "connect   server   failed\n ");
  12.                 exit(0);
  13.         }

  14.         // 使用连接式(connected)的 Socket 传送资料
  15.         result=send(clientsocket,buffsend,100,0);
复制代码


在局域网测试:目前Client 向 Server发送的测试信息能够接受到 ,

目前的问题是:
项目中服务器端在内网,需要通过internet ,
简单的网络拓补:

我在这里(61.*.*.*)[客户端]--------------  INTERNET  ----------- 网关(219.*.*.*) ----->服务器端(192.168.*.*)

服务器端那边没权限在网关上做端口映射之类的设置,这样怎么和服务器端通信 ?
是不是可以通过反向连接来通讯 ,
我的思路(假设):
1:  61这台设置监听888端口;
2:  内网192那台连接61的888端口;
3:  61发送命令,比如"ls" ,192那台接收,并反馈结果到61的机器上 ;

好像这样经过好几次的握手通讯,这样的通讯连接数据能保持吗?

请指教!

论坛徽章:
0
2 [报告]
发表于 2008-02-23 10:20 |只看该作者
有一个公网ip就可以。

论坛徽章:
0
3 [报告]
发表于 2008-02-23 11:54 |只看该作者
如果两个都是私网,那只能找个公网服务器来进行p2p握手了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP