免费注册 查看新帖 |

Chinaunix

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

sock服务器程序 指针益处请指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-13 18:40 |只看该作者 |倒序浏览
#include <sys/types.h>;
#include <stdio.h>;
#include <stdlib.h>;
#include <netinet/in.h>;
#include <sys/socket.h>;
#include <string.h>;

#define  MYPORT 8000
#define  BACKLOG  5
#define  MAXSIZEOF 1024
  
int
main()
{
        int listen_fd,connect_fd;
        char buf[MAXSIZEOF];
        struct sockaddr_in server_addr;
        struct sockaddr_in their_addr;

        socklen_t sizelen;
//        int * p;
        int ret;
       
        listen_fd=socket(AF_INET,SOCK_STREAM,0);
        if ( listen_fd <0)
        {
                perror("socket";
                exit(-1);
        }
       
        server_addr.sin_family=AF_INET;
        server_addr.sin_port=htons(MYPORT);
  server_addr.sin_addr.s_addr=inet_addr("192.168.16.205";
//        bzero(&(server_addr.sin_zero),;
        bzero(server_addr.sin_zero,;
       
        ret=bind(listen_fd,(struct sockaddr*)&server_addr,sizeof(struct sockaddr));
        if ( ret !=0)
        {
                perror("bind";
                exit(-1);
        }
       
        ret=listen(listen_fd,BACKLOG);
        if ( ret !=0)
        {
                perror("listen";
                exit(-1);
        }
      
        their_addr.sin_family=AF_INET;
        their_addr.sin_port=ntohl(8009);
        their_addr.sin_addr.s_addr=inet_addr(INADDR_ANY);
        bzero(&(their_addr.sin_zero),;
        sizelen=sizeof(struct sockaddr);
//        p=&amp;
       
        connect_fd=accept(listen_fd,(struct sockaddr*)&their_addr,&sizelen);
        if ( connect_fd >;0)
  {       
       
                recv(connect_fd,buf,sizeof(buf),0);
          system(buf);
        }
        close(connect_fd);
  
}



  我是出学者,请大家帮帮忙。看看哪里出错了。在编译时通过了,运行提示指针益处。

021.jpg (124.92 KB, 下载次数: 70)

021.jpg

论坛徽章:
0
2 [报告]
发表于 2004-12-13 22:48 |只看该作者

sock服务器程序 指针益处请指教

到精华区找找,这种问题讨论得太多了,随边google一下拷贝下来就行了

论坛徽章:
0
3 [报告]
发表于 2004-12-14 09:17 |只看该作者

sock服务器程序 指针益处请指教

我知道自己写的很垃圾,浏览的人很多,但没有留下只言片语。
没有告诉我错在哪里。

一个初学者真的很苦恼,明明错了却不知错在哪里。
请各位高手多给我一分钟时间,告诉我错在哪里。谢谢。

论坛徽章:
0
4 [报告]
发表于 2004-12-14 09:20 |只看该作者

sock服务器程序 指针益处请指教

>;>;me:仔细看看accept()的函数原型,第三个参数是什么

这个我看了一下,机器上sizeof(struct sockaddr_in)和sizeof(struct sockaddr)的输出都是16,倒是我一向把accept和connect的第三个参数用成前者,这是不对的(虽然结果一样)

论坛徽章:
0
5 [报告]
发表于 2004-12-14 09:36 |只看该作者

sock服务器程序 指针益处请指教

还有,不明白你把thier_addr结构赋值,有什么用处吗?我觉得accept第二个参数之所以用地址,就是为了可写入那个结构的。此前你赋的值好像就被覆盖了吧?

论坛徽章:
0
6 [报告]
发表于 2004-12-14 09:39 |只看该作者

sock服务器程序 指针益处请指教

// bzero(&(server_addr.sin_zero),;
bzero(server_addr.sin_zero,;
====
好像你注释掉的是抄来的,
那你为什么改成你那样呢???

论坛徽章:
0
7 [报告]
发表于 2004-12-14 10:15 |只看该作者

sock服务器程序 指针益处请指教

谢谢大家。
我把错误改了过来,并且通过了。

论坛徽章:
0
8 [报告]
发表于 2004-12-14 11:05 |只看该作者

sock服务器程序 指针益处请指教

好不容易在大家的帮忙下把server端的修改正确了。
可是客户机这端又出现了问题。
高兴没几分钟又开始郁闷了, 请好心人再帮忙看看吧。

#include <sys/types.h>;
#include <stdio.h>;
#include <stdlib.h>;
#include <netinet/in.h>;
#include <sys/socket.h>;

#define  MAXSIZEOF 1024

  
int
main(int argc,char * argv)
{
        int socket_fd;
//        char buf[MAXSIZEOF];
        struct sockaddr_in client_addr;
        ssize_t sizelen;
        int ret;

  socket_fd=socket(AF_INET,SOCK_STREAM,0);
        if( socket_fd <0)
        {
                perror("socket error";
                exit(-1);
        }
       
        client_addr.sin_family=AF_INET;
        client_addr.sin_port=htonl(8000);
        client_addr.sin_addr.s_addr=inet_aton("192.168.16.205";
        bzero(&(client_addr.sin_zero),;
        ret=connect(socket_fd,(struct sockaddr*)&client_addr,sizeof(struct sockaddr));
        if ( ret <0 )
        {
                perror("connect";       
                exit(-1);
        }
        else{
                printf("connect ok!!please input command !!\n";
                sizelen=send(socket_fd,argv,sizeof(argv),0);
                if (sizelen!=sizeof(argv))
                {
                                perror("send";
                                exit(-1);       
                }
               
        }
       
}

论坛徽章:
0
9 [报告]
发表于 2004-12-14 12:56 |只看该作者

sock服务器程序 指针益处请指教

修改一下代码吧,1,用code功能,编辑贴子时在编辑框的右上方看得到的;2,在编辑框下方,有些选项,在那里禁止phpBB代码,这样一些代码就不会被转换成表情图象了。

论坛徽章:
0
10 [报告]
发表于 2004-12-14 13:00 |只看该作者

sock服务器程序 指针益处请指教

不行的,楼主,还是建议先补一补C语言,象argv这种东西实在是……这类似的基础知识不弄懂是做不了socket的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP