python_socket2

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)

socket和file的区别:

file模块是针对某个指定文件进行【打开】【读写】【关闭】
socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】

socket编程步骤

Client端

#创建一个socket连接服务器
socket = socket.socket()

#使用connect连接服务器,传的是个tuple
socket.connect((host,port))

#客户端发送数据,将string中的数据发送到连接的套接字,返回值是要发送的字节数量。
socket.send(string)

#通过递归调用send,将所有内容发送出去若成功返回None,若没成功则抛出异常
socket.sendall(string)

#设置接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数据量
socket.recv(bufsize)

#传输完毕后关闭套接
socket.close()

  

Server端

#实例化socket对象socket = socket.socket()


#bind服务器地址
socket.bind(address)

#设置监听,可以设置当时的并发数
socket.listen(num)

#设置连接返回(conn,addr)其中conn是新的套接对象,可以用来接收和发送数据
#addr是连接客户端的地址
conn,addr = socket.accept()

#设置接收套接字,数据以字符串形式返回,bufsize指定最多可以接收的数量
socket.recv(bufsize)

#关闭socket通道
socket.close()
服务端
import socket
server = socket.socket()
server.bind(("localhost",9999))
server.listen()
print ("wait..")
conn,addr = server.accept()
print (conn,addr)
server.close()

  

客户端
import sockert
client = socket.socket()
client.connect("localhost",9999)
client.close()
<socket.socket fd=324, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1'6969), raddr=('127.0.0.1'4476)> ('127.0.0.1'4476)

  

原文地址:https://www.cnblogs.com/zoee/p/5871194.html