#のソケットアプリケーション層との界面の集合である中間ソフトウェアTCP / IPプロトコル通信抽象化層、。これは、ソケット非表示にするには、TCP / IPプロトコル複雑だ #そのソケットは、指定されたプロトコルに準拠するためにデータを整理するので、インターフェイスの背後にあるが。 #ソケットモジュールであり、二つのプログラム間の接続および通信を確立するためにそれを使用します。IPロゴため、ソケットはまた、IP +ポートとして見ることができる #の場所インターネットホスト、およびポートは、アプリケーション、見つけるために設立IPとポート限り、このホスト上のアプリケーションを識別 #および使用をアプリケーションと通信するためのソケットモジュール。 #A、サーバーserver: #1.1 のインポートソケット 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()