亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 11241 | 回復: 9
打印 上一主題 下一主題

[Linux] linux下socket編程 總是connect失敗 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-04-06 17:48 |只看該作者 |倒序瀏覽
如題,客戶端和服務端都是在本機,但客戶端總是connect失敗,端口設置的是6666,ip設置的是127.0.0.1,服務端已經(jīng)在監(jiān)聽了。錯誤碼是111.
還有,我用的是vmware,,不能聯(lián)網(wǎng),不知道跟這個有沒有關(guān)系。謝謝各位了!

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [報告]
發(fā)表于 2014-04-06 18:29 |只看該作者
執(zhí)行下“ifconfig -a”, 能看到127.0.0.1這個IP嗎?如果可以,那就是代碼問題了,最好貼出來。

論壇徽章:
0
3 [報告]
發(fā)表于 2014-04-06 19:37 |只看該作者
能看到哈,在“l(fā)o”里。我的代碼
// 客戶端
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

typedef struct sockaddr SA;

int main()
{
  struct sockaddr_in client_addr;
  char str[1024];
  int client_fd;
  client_fd = socket(AF_INET, SOCK_STREAM, 0);
  if(client_fd == -1)
    {
      printf("socekt is failed!...\n");
      return -1;
    }
  printf("socket is ok!...\n");

  bzero(&client_addr, sizeof(client_addr));
  client_addr.sin_family = AF_INET;
  client_addr.sin_port = htonl(6666);
  client_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

  if(-1 == connect(client_fd, (SA *)&client_addr, sizeof(client_addr)) )
    {
      printf("connect is failed!...\n");
      printf("%d\n", errno);
      return -1;
    }
  printf("connect is ok!...\n");

  if(read(stdin, str, 1024) < 0)
    {
      printf("read is failed!...\n");
      return -1;
    }
  while(1)
    {
      if(write(client_fd, str, strlen(str)) < 0)
      {
         printf("write is failed!...\n");
         return -1;
      }
    }

  close(client_fd);
  return 0;
}

//服務端
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

typedef struct sockaddr SA;

int main()
{
  int serverfd, acceptfd;
  struct sockaddr_in server_addr;
  char buf[1024];
  serverfd = socket(AF_INET, SOCK_STREAM, 0);
  if(serverfd == -1)
    {
      printf("socket is failed!...\n");
      return -1;
    }
  printf("socket is ok!...\n");

  bzero(&server_addr, sizeof(server_addr));
  server_addr.sin_family = AF_INET;
  server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  server_addr.sin_port = htons(6666);

  if(-1 == bind(serverfd, (SA *)&server_addr, sizeof(server_addr)))
    {
      printf("bind is failed!...\n");
      return -1;
    }
  printf("bind is ok!...\n");

  if(-1 == listen(serverfd, 1024))
    {
      printf("listen is failed!...\n");
        return -1;
    }
  printf("listen is ok!...\n");

  int size;
  size = sizeof(server_addr);
  while(1)
    {
      if(-1 == ( acceptfd = accept(serverfd, (SA *)&server_addr, &size) ))
      {
         printf("accept is failed!...\n");
         return -1;
      }
      printf("accept is ok!...\n");
      read(acceptfd, buf, 1024);
      write(stdout, buf,1024);
      close(acceptfd);
    }
  
  close(serverfd);
  return 0;
}

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
4 [報告]
發(fā)表于 2014-04-06 20:02 |只看該作者
回復 3# danieluec
  1. client_addr.sin_port = htonl(6666);
復制代碼
改為
  1. client_addr.sin_port = htons(6666);
復制代碼
先試下。



   

論壇徽章:
0
5 [報告]
發(fā)表于 2014-04-06 20:30 |只看該作者
厲害!問題就是出到這了,多謝!!

論壇徽章:
0
6 [報告]
發(fā)表于 2014-04-06 20:35 |只看該作者
不過還是想問一下,兩端比較保持一致嗎?

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
7 [報告]
發(fā)表于 2014-04-06 20:45 |只看該作者
回復 6# danieluec
沒看懂這個問題。。。


   

論壇徽章:
0
8 [報告]
發(fā)表于 2014-04-06 20:53 |只看該作者
原來的錯誤代碼中,客戶端用的是htonl,服務段用的是htons。
客戶端和服務段必須要一致嗎?比如已經(jīng)改好的這種,都用的是htons

論壇徽章:
11
技術(shù)圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
9 [報告]
發(fā)表于 2014-04-06 21:34 |只看該作者
回復 8# danieluec
函數(shù)是否一致是表象,關(guān)鍵是要讓端口數(shù)值上相等,否則TCP連接怎能建立?你printf下htonl(6666)和htons(6666),它倆的數(shù)值根本不相等。。。


   

論壇徽章:
0
10 [報告]
發(fā)表于 2014-04-07 17:35 |只看該作者
明白了!多謝!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP