python实现socket协议C/S,进行通信

服务端代码:

#!/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类和其子类来完成的

你可能感兴趣的:(python实现socket协议C/S,进行通信)