Chinaunix首页 | 论坛 | 博客
  • 博客访问: 106426
  • 博文数量: 74
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 757
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-20 22:42
个人简介

相信生命中的无限潜能

文章分类

全部博文(74)

文章存档

2016年(1)

2015年(30)

2014年(30)

2013年(13)

我的朋友

分类: C/C++

2014-02-21 22:09:22


  1. #include <stdio.h>
  1. #include <stdlib.h>
  1. #include <unistd.h>
  1. #include <sys/socket.h>
  1. #include <string.h>
  1. #include <linux/un.h>
  1. #include <netinet/in.h>
  1. #include <arpa/inet.h>
  2. /*
     *int socket(int domain, int type, int protocol)
     *  返回值:若成功则返回文件(套接字)描述符, 若出错返回-1
     *
     *  参数domain确定通信特性
     *      AF_INET     IPv4因特网域
     *      AF_INET6    IPv6因特网域
     *      AF_UNIX     UNIX域
     *      AF_UNSPEC   未指定
     *
     *  参数type确定(套接字)描述符的类型
     *      SOCK_DGRAM 长度固定,无连接的不可靠报文传递
     *      SOCK_RAM   IP协议数据接口
     *      SOCK_SEQPACKET   长度固定,有序,可靠的面向连接报文传递
     *      SOCK_STREAM      有序,可靠,双向的面向连接字节流
     *
     *  参数protocol通常为零,表示按给定的域和(套接字)描述符类型选择默认协议
     *
     */


    /*
     *因特网地址定义在
     *      struct in_addr{
     *          in_addr_t  a_addr;          //IPv4 addres
     *      }
     *
     *      struct sockaddr_in{
     *          sa_family_t    sin_family;  //address family
     *          in_port_t      sin_port;   //port number
     *          struct in_addr sin_addr;  //IPv4 addres
     *      }
     *
     */
    /*用bind函数将地址绑定到一个(套接字)文件描述符
     *
     *      int bind(int sockfd, const struct sockaddr *addr, socklen_t len);
     *
     *      返回值:若成功返回0 失败返回-1
     */


    /*建立连接
     *  int connect(int sockfd,const struct sockt sockaddr *add, socklen_t len );
     *
     *  返回值:若成功返回0 ,失败返回-1
     */



  1. int main()
  1. {
  1.     int buf[200];
  1.     int fd;
  1.     int r;
  1.     /*建立socket*/
  1.     fd=socket(AF_INET,SOCK_DGRAM,0);
  1.     if(fd==-1)printf("socket err:%m\n"),exit(-1);
  1.     printf("socket 创建成功");
  1.     /*构造本地文件地址*/
  1.     struct sockaddr_in addr={0};
  1.     addr.sin_family=AF_INET;
  1.     addr.sin_port=htons(9999);
  1.     addr.sin_addr.s_addr=inet_addr("192.168.1.101");
  1.     /*把socket绑定在地址上*/
  1.     r=bind(fd,(const struct sockaddr*)&addr,sizeof(addr));
  1.     if(r==-1)printf("bind err:%m\n"),exit(-1);
  1.     while(1)
  1.     {
  1.         //bzero(buf,sizeof(buf));
  1.         read(fd,buf,sizeof(buf));
  1.         printf("%s\n",buf);
  1.     }
  1.     /*关闭*/
  1.     close(fd);
  1.     return 0;
  1. }


  1. #include <stdio.h>
  1. #include <stdlib.h>
  1. #include <unistd.h>
  1. #include <sys/socket.h>
  1. #include <string.h>
  1. #include <linux/un.h>
  1. #include <netinet/in.h>
  1. #include <arpa/inet.h>
  1. int main()
  1. {
  1.     int fd;
  1.     int r;
  1.     /*建立socket*/
  1.     fd=socket(AF_INET,SOCK_DGRAM,0);
  1.     if(fd==-1)printf("socket err:%n"),exit(-1);
  1.     printf("socket netb.c 创建成功");
  1.     /*构造本地文件地址*/
  1.     struct sockaddr_in addr={0};
  1.     addr.sin_family=AF_INET;
  1.     addr.sin_port=htons(9999);
  1.     addr.sin_addr.s_addr=inet_addr("192.168.1.101");

  1.     r = connect(fd,(struct sockaddr*)&addr,sizeof(addr));
  1.     while(1)
  1.     {
  1.         write(fd,"(o.o)..",strlen("(o.o).."));
  1.         sleep(1);
  1.     }
  1.     /*关闭*/
  1.     close(fd);
  1.     /*删除socket文件*/
  1.     //unlink("my.sock");
  1.     return 0;
  1. }



阅读(825) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~