socket基础总结

Socket总结

一、Socket

Socket是在应用层与TCP/IP协议族之间的一个中间抽象层,是一组网络应用程序的接口,像文件一样,可以使用文件描述符。

网间进程通信由两个进程构成,使用同一种协议,它包括一个五元组(协议,本地IP,远程IP,本地端口,远程端口)

端口:操作系统可分配的资源,由数据结构和IO构成,在网络中可以被寻址,用于标识通信进程。

网络字节序:由于不同计算机有不同的字节存储方式,大端(低地址存储高位)和小端(低地址存储低位),因此使用网络字节序(大端)。

二、几个函数

int socket(int domain, int type, int protocol);

domaim: 协议域,有为AF_INET,AF_INET6, AF_LOCAL等。

Type: 套接字类型,SOCK_STREAM流式套接字,SOCK_DGRAM数据报套接字,SOCK_RAW原始套接字

Protocol:当为0时默认选择与第二个参数匹配的类型,在WINDOWS下没有这个参数

返回值:套接字号

int bind(SOCKET socket, const structsockaddr* address,socklen_t address_len);

                  socket:套接字

                  address:sockaddr_in 结构体指针,其中包含了要结合的地址和端口

                                    sockaddr_in.sin_family  //协议族

                                    sockaddr_in.sin_prot     //端口号,要转换为网络字节序

                                    sockaddr_in.sin_addr.s_addr     //地址,htonl(INADDR_ANY)表任何

                        socklen_t: address缓冲区的长

            返回值:成功返回0

 

      Int listen(int sockfd, int backlog) //连接套接字,使它成为服务器

                        Sockfd:套接字号

                        Backlog:处理多个连接,一般上限为30

                        返回值:

int accept(intsockfd, struct sockaddr *addr, socklen_t *addrlen);

      sockfd:套接字号

      sockaddr*:sockaddr_in指针

      socklen_t返回一个实际地址的参数

返回值:返回一个描述所接受包的SOCKET类型的值、

      int connect( SOCKET s, conststruct sockaddr * name, int namelen);

s: 未连接socket

name sockaddr_in指针

namelen: sockaddr_in长度

int recv(SOCKET socket,char FAR* buf, int len, int flags);

            socket: 已连接上的对方的socket

            buf: 字符缓冲

            len:字符长度

            flag:指定调用方式

            返回值:无错误返回读入的字节数

Int send(SOCKET s, constchar* buf, int len, int flag)

s:一个用于标识已连接对方的套接字

buf:包含待发送数据的缓冲区

len:缓冲区中数据的长度。

flags:调用执行方式。

                 

 

三、通信模型

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值