免费注册 查看新帖 |

Chinaunix

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

我的这两段socket程序无法连接 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-07 23:11 |只看该作者 |倒序浏览
server.c和client.c两段程序连接不上
server.c
#include <stdio.h>;
#include <stdlib.h>;
#include <unistd.h>;
#include <sys/types.h>;
#include <sys/socket.h>;
#include <netinet/in.h>;
int main()
{
int i,sz,*buf;
long s,port=7797;//,port是端口号
struct sockaddr_in sa;
sz=sizeof(sa);//sockaddr_in的长度
sa.sin_family=AF_INET;
sa.sin_addr.s_addr=htonl(INADDR_ANY);
sa.sin_port=htonl(port);

s=socket(PF_INET,SOCK_STREAM,0);
bind(s,(struct sockaddr*)&sa,sz);
listen(s,1);
printf("%d\n",i);//显示0
accept(s,(struct sockaddr *)&sa,&sz);
sz=recv(s,buf,1024,0);
write(0,buf,sz);
return 0;
}





client.c
#include <stdio.h>;
#include <stdlib.h>;
#include <unistd.h>;
#include <sys/types.h>;
#include <sys/socket.h>;
#include <netinet/in.h>;
int main()
{
int s,i;
long port=7797;//端口
s=socket(PF_INET,SOCK_STREAM,0);

struct sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_addr.s_addr=inet_addr("127.0.0.1";
sa.sin_port=htonl(port);

i=connect(s,(struct sockaddr *)&sa,sizeof(sa));
printf("%d\n",i);//在这里总是显示-1
return 0;
}


多谢了!!!

论坛徽章:
0
2 [报告]
发表于 2004-05-08 07:56 |只看该作者

我的这两段socket程序无法连接

原帖由 "DaytonaUSA" 发表:
server.c和client.c两段程序连接不上
server.c
#include <stdio.h>;
#include <stdlib.h>;
#include <unistd.h>;
#include <sys/types.h>;
#include <sys/socket.h>;
#include <..........

简单看了看,没去调试
1.每步执行结果,若错误请做相应处理
2.你的CLIENT.C port = ???

论坛徽章:
0
3 [报告]
发表于 2004-05-08 10:59 |只看该作者

我的这两段socket程序无法连接

你的client段的port呢,呵呵

论坛徽章:
0
4 [报告]
发表于 2004-05-08 13:40 |只看该作者

我的这两段socket程序无法连接

不好意思,port值忘记加上了
可是我加上之后(port=7797)还是不能连接啊

帮我解决一下,多谢多谢了

论坛徽章:
0
5 [报告]
发表于 2004-05-08 16:38 |只看该作者

我的这两段socket程序无法连接

  1. [b]/*
  2. * Socket address, internet style.
  3. */
  4. struct sockaddr_in {
  5.         short   sin_family;
  6.         u_short sin_port;
  7.         struct  in_addr sin_addr;
  8.         char    sin_zero[8];
  9. };[/b]

  10. #include <stdio.h>;
  11. #include <stdlib.h>;
  12. #include <unistd.h>;
  13. #include <sys/types.h>;
  14. #include <sys/socket.h>;
  15. #include <netinet/in.h>;

  16. int main(int argc, char*argv[] )
  17. {
  18. int i,sz;//**错误** *buf;
  19. char buf[1024+1] = "";
  20. long s,port=7797;//,port是端口号
  21. long nClient=0;
  22. struct sockaddr_in sa;

  23.    sz=sizeof(sa);//sockaddr_in的长度
  24.    
  25.    bzero(&sa,sizeof(sa));
  26.    sa.sin_family=AF_INET;
  27.    sa.sin_addr.s_addr=htonl(INADDR_ANY);
  28.    sa.sin_port=htons(port);// **错误** htonl(port);
  29.    
  30.    s=socket(AF_INET,SOCK_STREAM,0);
  31.    bind(s,(struct sockaddr*)&sa,sz);
  32.    listen(s,5);
  33.    nClient=accept(s,(struct sockaddr *)&sa,&sz);
  34.    sz=recv(nClient,buf,1024,0);
  35.    if ( sz >; 0 )
  36.       write(0,buf,sz);
  37.    else
  38.       perror("recv");
  39.             
  40.    close(s);
  41.    close(nClient);      
  42.    return 0;
  43. }

  44. #include <stdio.h>;
  45. #include <stdlib.h>;
  46. #include <unistd.h>;
  47. #include <sys/types.h>;
  48. #include <sys/socket.h>;
  49. #include <netinet/in.h>;
  50. int main(int argc, char*argv[])
  51. {
  52. int s,i;
  53. long port=7797;//端口
  54. struct sockaddr_in sa;

  55.    s=socket(AF_INET,SOCK_STREAM,0);
  56.   
  57.    bzero(&sa,sizeof(sa));
  58.    sa.sin_family=AF_INET;
  59.    sa.sin_addr.s_addr=(unsigned long)inet_addr("127.0.0.1");
  60.    sa.sin_port=htons(port);//**错误** htonl(port); 请注意这里
  61.    
  62.    i=connect(s,(struct sockaddr *)&sa,sizeof(sa));
  63.    printf("%d\n",i);//**错误** 在这里总是显示-1 现在不会了,呵呵.
  64.    if ( send(s,"hello world!\n",14,0) < 0 )
  65.       perror ( "write" );
  66.    close(s);
  67.    return 0;
  68. }
复制代码
[/code]

论坛徽章:
0
6 [报告]
发表于 2004-05-08 16:42 |只看该作者

我的这两段socket程序无法连接

sin_port 是unsigned short 类型;
必须使用 htons() 函数.

论坛徽章:
0
7 [报告]
发表于 2004-05-08 18:35 |只看该作者

我的这两段socket程序无法连接

弄好了
太感谢了!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP