socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) famliy:地址族;默认为AF_INET;还有AF_INET6、AF_UNIX、AF_CAN、AF_RDS;(AF_UNIX实际上是使用本地 socket 文件来通信)。 type:套接字类型;应为SOCK_STREAM(默认值,基于TCP)、SOCK_DGRAM(基于UDP)、SOCK_RAW或其他SOCK_常量之一。
用户使用socket系统调用编写应用程序时,通过一个数字来表示一个socket,所有的操作都在该数字上进行,这个数字称为套接字描述符。在系统调用 的实现函数里,这个数字就会被映射成一个表示socket的结构体,该结构体保存了该socket的所有属性和数据。在内核的协议中实现中,关于表示 socket的结构体,是一个比较复杂的东西,下...
#sk =socket.socket()#sk.bind(('127.0.0.1',8888)) #服务器建立ip 和端口#sk.listen() # 创建监听#conn,addr =sk.accept() #阻塞,直到有一个客户端来连接我,三次握手#print(addr)#while True:#send_msg =input('msg: ')#conn.send(send_msg.encode()) #转化成2进制#msg =conn.recv(1024).d...
sock结构工作在INET socket层,所有BSD socket层的操作都通过struct sock 及其域字段prot指针转化为prot锁指向的函数处理,所以sock结构是维系 BSD socket层和INET socket层的纽带,其重要性是不言而喻的。 下面是对sock结构的简单注释,有些没有的待我弄懂后再来修改,^_^ struct sock { /* Socket demultiplex compari...
1.创建一个struct socket结构体: int sock_create(int family, int type, int protocol, struct socket **res); int sock_create_kern(int family, int type, int protocol, struct socket **res); EXPROT_SYMBOL(sock_create); EXPROT_SYMBOL(sock_create_kern); ...
struct socket { socket_state state; unsigned long flags; const struct proto_ops *ops; struct fasync_struct *fasync_list; struct file *file; struct sock *sk; wait_queue_head_t wait; short type; }; state用于表示socket所处的状态,是一个枚举变量,其类型定义如下: C代码 1.typedef enum { 2....
(struct sockaddr*)mysock sa_data的含义是由sa_family决定 如果sa_family=AF_INET 则sa_data就是sockaddr_in的sin_addr和sin_port 换句话说,这时sockaddr可以当作sockaddr_in看 Sockfd是调用socket函数返回的socket描述符,my_addr是个指向包含有本机IP地址及端口号等信息的sockaddr类型的指 ...
struct socket { socket_state state; unsigned long flags; const struct proto_ops *ops; struct fasync_struct *fasync_list; struct file *file; struct sock *sk; wait_queue_head_t wait; short type; }; state用于表示socket所处的状态,是一个枚举变量,其类型定义如下: ...
Linux内核 | socket底层的来龙去脉 上一篇文章对Linux sockfs文件系统的注册和挂载进行了分析,本文在上文基础上进一步全面分析socket底层的相关实现。 一、socket与inode socket在Linux中对应的文件系统叫Sockfs,每创建一个socket,就在sockfs中创建了一个特殊的文件,同时创建了sockfs文件系统中的inode,该inode唯一标识...
intinet_listen(struct socket *sock,intbacklog) { structsock*sk=sock->sk; unsignedcharold_state; interr, tcp_fastopen; lock_sock(sk); err = -EINVAL; if(sock->state != SS_UNCONNECTED || sock->type != SOCK_STREAM) gotoout;