LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1133|回复: 6

关于socket编程

[复制链接]
发表于 2003-6-9 10:49:25 | 显示全部楼层 |阅读模式
我看了很多google中的文章。其实讲的都是一样的,入门东西。
可我太差了。看不明白,所以想来这问问兄弟们,看看我的理解对不对。请指正。谢谢

最好能请兄弟解释一下,以下的代码怎样用,我现在还不是很清楚。
是不是要知道远程服务器的IP ,才可以呀,下边是通过主函数的参数输入IP的吧。可IP存到了,那个变量里了,我没看出来。

由于我要干活去了,我的理解还没有写完,我回来就来说说,请兄弟们帮忙看看。给我讲讲。谢谢
以下是unix网络编程的例子:

  1. #include <unp.h>
  2. int
  3. main(int argc,char** argv)
  4. {
  5.     int sockfd.n;
  6. [color=red]/*上句是不是定义的套接字,哦是逗号呀*/[/color]
  7.     char recvline[MAXLINE+1];
  8. [color=red]/*定义的缓冲区大小*/[/color]
  9.     struct sockaddr_in servaddr;
  10.     if(argc !=2)
  11.         err_quit("usage: a.out <IP address>");
  12.     if( ( sockfd = socket(AF_INET, SOCK_STREAM,0))<0)
  13.          err_sys("socket error");
  14.     bzero(&servaddr.sizeof(servaddr));
  15.     servaddr.sin_family = AF_INET;
  16.     servaddr.sin_port = htons(13);    [color=red]/* daytime server时间服务器*/[/color]
  17.     if(inet_pton(AF_INET.argv[1],&servaddr.sin_addr) <= 0)
  18. [color=red]/**/[/color]
  19.          err_quit("inet_pton error for %s" , argv[1]);
  20.     if(connect (sockfd, (SA*) &servaddr, sizeof(servaddr))<0)
  21.          err_sys("connect error");
  22.     while( (n=read (sockfd, recvline, MAXLINE))>0)
  23.     {
  24.          recvline[n]=0; /* null terminate */
  25.          if (fputs (recvline,stdout) ==EOF)
  26.               err_sys("fputs error");
  27.      }
  28.      if(n<0)
  29.           err_sys("read error");
  30.      exit(0);
  31. }
复制代码
发表于 2003-6-9 11:33:22 | 显示全部楼层

  1. #include <unp.h>
  2. int
  3. main(int argc,char** argv)
  4. {
  5.   int sockfd.n;
  6.   [color=red]/* 不是点n,是逗号*/[/color]
  7.   char recvline[MAXLINE+1];
  8.   [color=red]/*是定义的缓冲区*/[/color]

  9.   struct sockaddr_in servaddr;
  10.   if(argc !=2)
  11.     err_quit("usage: a.out <IP address>");
  12.   if( ( sockfd = socket(AF_INET, SOCK_STREAM,0))<0);[color=red]/* 这应该没有冒号 */[/color]
  13.      err_sys("socket error");
  14.   bzero(&servaddr.sizeof(servaddr)); [color=red]/* 初始化servaddr全为0 */[/color]
  15.   servaddr.sin_family = AF_INET; [color=red]/* 协议族为internet */[/color]
  16.   servaddr.sin_port = htons(13);    /* daytime server*/ [color=red]/* 端口13 */[/color]
  17.   if(inet_pton(AF_INET.argv[1],&servaddr.sin_addr) <= 0);
  18.   [color=red]/* 将argv[1]转换为ip地址,没有分号 */[/color]
  19.        err_quit("inet_pton error for %s" , argv[1]);
  20.   if(connect (sockfd, (SA*) &servaddr, sizeof(servaddr))<0);
  21.   [color=red]/* 连接服务器,没分号 */[/color]
  22.        err_sys("connect error");
  23.   while( (n=read (sockfd, recvline, MAXLINE))>0)  [color=red]/* 从服务器取数据 */[/color]
  24.   {
  25.        recvline[n]=0; /* null terminate */
  26.        if (fputs (recvline,stdout) ==EOF) [color=red]/* 显示 */[/color]
  27.             err_sys("fputs error");
  28.    }
  29.    if(n<0)
  30.         err_sys("read error");
  31.    exit(0);
  32. }
复制代码

你既然有UNP,上面应该讲的很清楚呀。
发表于 2003-6-9 12:55:50 | 显示全部楼层
这种上课都会教的吧
操作系统
发表于 2003-6-10 03:05:55 | 显示全部楼层
楼主要认真学习!
发表于 2003-6-10 13:02:50 | 显示全部楼层
例子都一样的
就那几个函数
socket
bind
listen

connect

send recv

没有什么新东西
 楼主| 发表于 2003-6-10 16:47:55 | 显示全部楼层
我正在认真的找书看,介绍这几种函数的东西。
发表于 2003-6-11 08:23:07 | 显示全部楼层
google一搜,到处都有。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表