Chinaunix

标题: Sock编程,请教! [打印本页]

作者: 饭饭    时间: 2008-02-23 01:45
标题: Sock编程,请教!

  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的机器上 ;

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

请指教!
作者: cheney_lang    时间: 2008-02-23 10:20
有一个公网ip就可以。
作者: cugb_cat    时间: 2008-02-23 11:54
如果两个都是私网,那只能找个公网服务器来进行p2p握手了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2