# socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口。它把复杂的TCP/IP协议隐藏到socket #接口的后面,让socket去组织数据,以符合指定的协议。 # socket是一个模块,使用它来建立两个程序之间的连接和通信。也可以把socket看做是ip+port,因为ip标识 #互联网中一台主机的位置,而port标识这台主机上的一个应用程序,只要确立ip和port就可以找到一个应用程序, #并且使用socket模块来与这个应用程序通信。 # 一、server服务端: # 1.1 import socket sk = socket.socket() #买手机 sk.bind(('127.0.0.1',8080)) #绑定手机卡:sk.bind(('ip','port')),bind(元祖) # 127.0.0.1是本机的回环地址,用于本机内部应用程序的通信。 sk.listen() #监听,等待有人给我打电话 conn,addr = sk.accept() #接收到别人的电话, # 得到了连接conn(connection),和别人的地址addr(address) ret = conn.recv(1024) #听别人说话, # 接收1024个字节,如果接收更长的信息可以填写2048或其他更大的数字,recv(receive)接收 print(ret) conn.send(b'hi,client') #和别人说话,必须传一个bytes类型。 ret = conn.recv(1024) print(ret.decode('utf-8'))#接收中文,编码为utf-8 conn.send(bytes('你也不错',encoding = 'utf-8')) #'你也不错'.encode('utf-8') conn.close() #挂电话 sk.close() #关手机 # 1.2 不停跟client聊天,直到说bye才结束。 import socket sk = socket.socket() sk.bind(('127.0.0.1',8082)) sk.listen() conn,addr = sk.accept() while True: ret = conn.recv(1024).decode('utf-8') if ret == 'bye': print(ret) conn.send(b'bye') break print(ret) info = input('>>>') conn.send(bytes(info,encoding = 'utf-8')) conn.close() sk.close() # 二、client客户端: # 2.1 import socket sk = socket.socket() #买手机 sk.connect(('127.0.0.1',8080))#拨号,连接别人的地址和端口 sk.send(b'hello,server') #和别人说话 ret = sk.recv(1024) #听别人说话 print(ret) sk.send(bytes('你很好',encoding = 'utf-8')) ret = sk.recv(1024) print(ret.decode('utf-8')) sk.close() #关手机 # 2.2 不停跟server聊天,直到说bye才结束。 import socket sk = socket.socket() sk.connect(('127.0.0.1',8082)) while True: info = input('>>>') sk.send(bytes(info,encoding = 'utf-8')) ret = sk.recv(1024).decode('utf-8') print(ret) if ret == 'bye': sk.send(b'bye') break sk.close()
day26-socket(server和client通信)
猜你喜欢
转载自www.cnblogs.com/python-daxiong/p/11325088.html
今日推荐
周排行