服务端代码:
#!/usr/bin/python
import time, socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('127.0.0.1', 999))
s.listen(5)
while True: sock, addr = s.accept()
data = sock.recv(1024)
print(data.decode())
sock.send('Hello, %s!' % data.encode())
sock.close()
print('Connection from %s:%s closed.' % addr)
客户端代码:#!/usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', 999))
s.send('hello'.encode())
print(s.recv(1024).decode())
函数
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
参数Ⅰ --- 地址簇
AF_INETIPv4(默认)
AF_INET6IPv6
AF_UNIX 本地Unix系统进程间通信
参数Ⅱ --- 类型
SOCK_STREAM TCP流式socket (默认)
SOCK_DGRAM UDP数据报式socket
SOCK_RAW 原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以IP_HDRINCL套接字选项由用户构造IP头。
SOCK_RDM 一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。
SOCK_RAM 通常仅限于高级用户或管理员运行的程序使用。
SOCK_SEQPACKET 可靠的连续数据包服务
参数Ⅲ --- 协议
0 协议号通常为零,可以省略,或者在地址族为AF_CAN的情况下,协议应为CAN_RAW或CAN_BCM之一。
serversocket服务器端的socket接口
Socket是建立网络连接时使用的,在连接成功时,应用程序两端zhi都会产生一个Socket实例dao
操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别
不因为在服务器端或在客户端而产生不同的级别,不管是Socket还是ServerSocket他们的
工作都是通过Socket类和其子类来完成的
网友评论