作者:陈玲琳2013 | 来源:互联网 | 2023-09-03 18:02
#服务端
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
while True:
conn, address = sk.accept()
while True:
ret = conn.recv(1024)
print(ret)
inp = input('>>>')
conn.sendall(inp.encode('utf-8'))
# conn.sendall(bytes(inp, 'utf-8'))
#客户端
import socket
sk=socket.socket()
sk.connect(('127.0.0.1',8080))
while True:
inp=input('>>>>')
sk.sendall(bytes(inp,'utf-8'))
data=sk.recv(1024)
print(str(data,'utf-8'))
#非阻塞IO进行recvform系统调用,会马上得到一个结果,如果结果是一个error(异常处理)
# 此时证明数据还未准备好,在等在下次进行recvform系统调用的期间,进程可以做其他事情
#这个过程非阻塞将整片时间片分成N多小阻塞,循环往复的进行recvform的系统调用
#服务端
import time
import socket
import os
sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# sk.setsockopt
sk.bind(('127.0.0.1',8080))
sk.listen(5)
sk.setblocking(False)
while True:
try:
print('waiting client connection.......')
conn,address =sk.accept()
# print(os.getpid())
print('++++',address)
ret = conn.recv(1024) #系统级内核数据拷贝到用户级内存
print(ret)
conn.close()
except Exception as e:
print(e)
time.sleep(4)#在此期间进程可以做其他任务
#客户端
import time
import socket
sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
while True:
sk.connect(('127.0.0.1',8080))
print('hello')
sk.sendall(b'hello')
time.sleep(2)
break
#select的使用
#服务端
import socket
import select
sk=socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen(5)
sk.setblocking(False)
inputs=[sk,] #监听一个活动对象的列表
while True:
r,w,e=select.select(inputs,[],[],5) #哪个对象活动了,r就会被选出来
print('可活动的列表长度%s' % len(inputs))
print('活动的对象只有%s个' % len(r))
# print(type(r))
for obj in r:
if obj==sk:
conn,add=obj.accept()
print('conn:',conn)
inputs.append(conn) #客户端的套接字对象放入活动列表中
print('append之后<<<',r)
else:
data_byte=obj.recv(1024)
print(str(data_byte,'utf-8'))
if not data_byte:
inputs.remove(obj)
continue
inp=input('回答%s >>>' % inputs.index(obj))
obj.sendall(bytes(inp,'utf-8'))
print('结尾>>>',r)
#客户端
import socket
sk=socket.socket()
sk.connect(('127.0.0.1',8080))
while True:
inp=input('>>>>')
sk.sendall(bytes(inp,'utf-8'))
data=sk.recv(1024)
print(str(data,'utf-8'))
参考资料:http://www.cnblogs.com/Eva-J/articles/8324837.html