socket初识
SOCK_STREAM :TCP
SOCK_dgram :UDP
family=AF_INET: 服务器之间的通信 ipv4
family=AF_UNIX: Unix不同进程间通信 ipv6
协议里面一共有65535个端口
一般情况下1024中的端口号都被操作系统占用
client:sk
<socket.socket fd=464, family=AddressFamily.AF_INET,
type=SocketKind.SOCK_STREAM, proto=0>
server:
(<socket.socket fd=484, family=AddressFamily.AF_INET,
type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1',
8000),raddr=('127.0.0.1', 52858)>, ('127.0.0.1', 52858))
注意:两个sk无任何关系
server下的方法
bind()
listen()
accept()
recv()
send(String)
sendall()
close() 注:一般情况下服务端是不会关闭通道的
#author: wylkjj
#date:2019/4/16
#服务端
import socket
#参数family type(流)
sk=socket.socket()
print(sk)
address=('127.0.0.1',8000)#IP地址与端口
sk.bind(address)#绑定IP地址和端口
sk.listen(3)#最大等待量
print('waiting')
# conn=sk.accept()#Accept阻塞,等待连接
conn,addr=sk.accept()#单独变量接收IP地址和端口
# print(conn)
# (<socket.socket fd=484, family=AddressFamily.AF_INET,
# type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1',
# 8000),raddr=('127.0.0.1', 52858)>, ('127.0.0.1', 52858))
inp=input('>>>')
conn.send(bytes(inp,'utf8'))
client下的方法
connect()
recv()
send(String)
sendall() #注:在python3.以上中传送的内容一定是bytes类型,但python2.7中不做类型区分
close()#关闭通道
注:一收一发,不能同时发同时收
#author: wylkjj
#date:2019/4/16
#客户端
import socket
sk=socket.socket()
address=('127.0.0.1',8000)#回环地址(一个特殊地址,可以代指本机地址)
sk.connect(address)
data=sk.recv(1024)#阻塞,等待回复,接收操作,1024接受数据量
# data=sk.send(bytes('hshs','utf8'))
print(str(data,'utf8'))
sk.close()#关闭通道
实例:
#author: wylkjj
#date:2019/4/16
#客户端
import socket
sk=socket.socket()
address=('127.0.0.1',8000)
sk.connect(address)
inp = input('>>>')
sk.send(bytes(inp,'utf8'))
data=sk.recv(1024)#接收数据
print(str(data,'utf8'))
sk.close()
#author: wylkjj
#date:2019/4/16
#服务端
import socket
#参数family type(流)
sk=socket.socket()
print(sk)
address=('127.0.0.1',8000)#IP地址与端口
sk.bind(address)#绑定IP地址和端口
sk.listen(3)#最大等待量
print('waiting')
conn,addr=sk.accept()#单独变量接收IP地址和端口
data=conn.recv(1024)
print(str(data,'utf8'))
inp=input('>>>')
conn.send(bytes(inp,'utf8'))
完整实例:
#author: wylkjj
#date:2019/4/16
#服务端
import socket
#参数family type(流)
sk=socket.socket()
address=('127.0.0.1',8000)#IP地址与端口
sk.bind(address)#绑定IP地址和端口
sk.listen(3)#最大等待量
print('waiting')
# conn,addr=sk.accept()#单独变量接收IP地址和端口
while 1:
conn,addr=sk.accept()
print(addr)
while 1:
data=conn.recv(1024)
print('......'+str(data, 'utf8'))
if not data:break
inp=input('>>>')
conn.send(bytes(inp,'utf8'))
sk.close()
#author: wylkjj
#date:2019/4/16
#客户端
import socket
sk=socket.socket()
address=('127.0.0.1',8000)
sk.connect(address)
while True:
inp = input('>>>')
if inp=='exit':
break
sk.send(bytes(inp,'utf8'))
data=sk.recv(1024)#接收数据
print(str(data,'utf8'))
sk.close()
#注:不能发空内容
socket初识
最新推荐文章于 2021-12-15 10:16:42 发布