程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> socket編程 ping命令-socket編程

socket編程 ping命令-socket編程

編輯:編程綜合問答
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);
}

最佳回答:


ping不通說明網絡不通,你的程序肯定發送不了數據的,先保證客戶端所在的機器能ping通服務端所在的機器,然後再測試你的程序。

xiaohan005
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved