xiaohan005 2013-09-12 03:40 采纳率: 0%
浏览 2504
已采纳

socket编程——内网ping公网失败

我电脑连的是铁通的公网,在做一个C/S socket编程。在我一台电脑上客户端和服务器之间可以正常发送数据,但是客户端放到别的可以上网的电脑上时就连不上了。我用ping命令检测过网络情况,基本上都ping不通。只有一次一个同学在公司用他的电脑ping通了,不过是单向的,我还是Ping不通他的,服务器和客户端之间还是发送不了数据。有哪位高手知道是什么原因?谢谢!
服务器端部分代码如下:
//设定地址
serv.sin_addr.s_addr=htonl(INADDR_ANY);
serv.sin_family=AF_INET;
serv.sin_port=5000;//htons(5000);
addlen=sizeof(serv);
m_button.EnableWindow(FALSE);//退出为假
//创建socket
sock=socket(AF_INET,SOCK_STREAM,0);
BOOL val=true;
if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(char )val,sizeof(val))!=0);
{
printf("error!setsocket failed!/n");
// return -1;
}
//将socket绑定到服务器上
if (bind(sock,(sockaddr
)&serv,addlen))
{
m_edit.SetWindowText("绑定错误");
}else
{
//m_list.InsertItem(count++,inet_ntoa(serv.sin_addr));
m_edit.SetWindowText("服务器创建成功");
//开始侦听

listen(sock,5);
客户端:
cli.sin_addr.s_addr=inet_addr(ipaddress);
cli.sin_family=AF_INET;
cli.sin_port=5000;//htons(5000);
//创建socket
clisock=socket(AF_INET,SOCK_STREAM,0);

val=true;
if(setsockopt(clisock,SOL_SOCKET,SO_REUSEADDR,(char *)val,sizeof(val))!=0);
{
printf("error!setsocket failed!/n");
// return -1;
}

  if(connect(dlg->clisock,(sockaddr*)&(dlg->cli),sizeof(dlg->cli))==INVALID_SOCKET)
{
    printf("connet()failed:%d\n",WSAGetLastError());
    dlg->m_edit.SetWindowText("等待.....");
}
else
{       
    dlg->m_list.InsertItem(dlg->count++,"连接成功");
    dlg->m_button1.EnableWindow(TRUE);  
    dlg->SetForegroundWindow();
}
//接收数据
while(s!=SOCKET_ERROR && dlg->ee!=0)
{
    //调用recv函数接收数据
    s=recv(dlg->clisock,buff,100,0);
    dlg->SetForegroundWindow();//做什么?
    //如果没有接收错误,同时没有断开连接,则显示接收到的数据
    if (s!=SOCKET_ERROR && dlg->ee!=0)
    dlg->m_list.InsertItem(dlg->count++,buff);
    dlg->m_list.Scroll(size);
}
  • 写回答

2条回答

  • yaoxing116 2013-09-12 03:45
    关注

    ping不通说明网络不通,你的程序肯定发送不了数据的,先保证客户端所在的机器能ping通服务端所在的机器,然后再测试你的程序。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!