socket()模块和套接字对象的内建方法

一、socket()模块函数

要使用socket.socket()函数来创建套接字,其语法如下:

socket(socket_family,socket_type,protocol=0)

如上所述,scoket_family不是AF_UNIX就是AF_INET,scoket_type可以是SOCK_STREAM或SOCK_DGRAM,protocol一般不填,默认值为0.

创建一个TCP/IP套接字,你要这样调用socket.socket():

tcpsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

同样的,创建一个UDP/IP的套接字,你要这样:

udpsock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

由于socket有太多属性,我们一般使用from import socket * 语句,将所有属性导入命名空间。

二、套接字对象内建方法

下面是一些套接字对象常用的方法。

服务器端套接字函数
函数 描述
s.bind() 绑定地址(主机名、端口号对)到套接字
s.listen() 开始TCP监听
s.accept() 被动接受TCP客户端连接,(阻塞式)等待连接的到来
客户端套接字函数
函数 描述
s.connect() 主动初始化TCP服务器连接
s.connect_ex() connect()函数的扩展版本,出错时返回出错码,而不是抛出异常
公共用途的套接字函数
函数 描述
s.recv() 接受TCP数据
s.send() 发送TCP数据
s.sendall() 完整发送TCP数据
s.recvfrom() 接受UDP数据
s.sendto() 发送UDP数据
s.getpeername() 连接到当前套接字的远端地址(TCP连接)
s.getsockname() 当前套接字的地址
s.getsockopt() 返回指定套接字的参数
s.setsockopt() 设定指定套接字的参数
s.close() 关闭套接字
面向模块的套接字函数
函数 描述
s.settimeout() 设置阻塞套接字操作的超时时间
s.gettimeout() 得到阻塞套接字操作的超时时间
s.setblocking() 设置套接字的阻塞与非阻塞模式
面向文件的套接字函数
函数 描述
s.fileno() 套接字的文件描述符
s.makefile() 创建一个与该套接字关联的文件对象

提示:在运行网络应用程序时,最好在不同的电脑上执行服务器和客户端的程序。

时间: 2024-10-04 03:09:58

socket()模块和套接字对象的内建方法的相关文章

socket模块(套接字模块)

socket模块(套接字模块) 一.最简单版本(互传一次就结束) # 客户端 import socket client = socket.socket() client.connect(('127.0.0.1', 8080)) # 8080是端口号 ''' 来源百度百科 '127.0.0.1'是本机回还地址,不属于任何一个有类别地址类.它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口.在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址.一般

网络编程-socket实现简单套接字通信

Service import socket phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#给予网络,机于TCP协议的通信 #端口0-65535 #0-1024给操作系统使用 phone.bind(('127.0.0.1',8080)) #开始监听,表最大挂起链接数 phone.listen(5) #等待链接 #res=phone.accept() #res是一个套接字对象和客户地址 conn,client_addr=phone.ac

套接字对象

S 代表一个套接字 s.family : 获取套接字地址族类型 s.type: 获取套接字类型 s.getsockname: 获取套接字的绑定地址和端口 s.fileno : 获取套接字的文件描述符 每一个IO事件操作系统都会分配一个不同的正整数作为编号,该正整数即为这个IO的文件描述符 sys.stdin.fileno() --> 0 [文件描述符] sys.stdout.fileno() -->1 sys.stderr.fileno() -->2 s.getpeername() :

TCP协议的初始化及socket创建TCP套接字描述符

我们依然从start_kernel说起,它最后会执行: arch_call_rest_init() --> rest_init() --> Kernel_init() --> Kernei_init_freeable() --> do_basic_setup() --> do_initcalls() --> do_initcall_level(level) do_initcall_level(level)会根据level从0级开始以次执行相应先后等级的初始化函数. 第一

socket IPC(本地套接字 domain)

1.简介 socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包.计算校验和.维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程.这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的.UNIX

【Socket编程】套接字Windows平台C语言实现

[编译环境]:Visual Studio 2013 #include<stdio.h> #include<stdlib.h> #include<winsock2.h> #pragma comment(lib, "ws2_32.lib") const int BACK_LOG = 5; int main(int argc, char * argv[]) { //初始化套接字 WSADATA wsaData; int ret = WSAStartup(M

使用socket()函数创建套接字

在Linux中,一切都是文件,除了文本文件.源文件.二进制文件等,一个硬件设备也可以被映射为一个虚拟的文件,称为设备文件.例如,stdin 称为标准输入文件,它对应的硬件设备一般是键盘,stdout 称为标准输出文件,它对应的硬件设备一般是显示器.对于所有的文件,都可以使用 read() 函数读取数据,使用 write() 函数写入数据. “一切都是文件”的思想极大地简化了程序员的理解和操作,使得对硬件设备的处理就像普通文件一样.所有在Linux中创建的文件都有一个 int 类型的编号,称为文件

Socket:★★★★,套接字,通信的端点

就是为网络服务提供的一种机制,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输. UDP传输: 1,只要是网络传输,必须有socket . 2,数据一定要封装到数据包中,数据包中包括目的地址.端口.数据等信息. 直接操作udp不可能,对于java语言应该将udp封装成对象,易于我们的使用,这个对象就是DatagramSocket. 封装了udp传输协议的socket对象. 因为数据包中包含的信息较多,为了操作这些信息方便,也一样会将其封装成对

由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法(CSDN手动迁移)

异常信息: System.Net.Sockets.SocketException (0x80004005): 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作. 192.168.0.187:22 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)   at System.Net.Sockets.Socket.Connect(EndPoint remot