UPD communication

One, UDP communication

udp is no link, and then start the service can receive messages directly, no need to establish a link in advance

Two, UDP basic use

server:

. 1  Import Socket
 2  
. 3 Server = socket.socket (type = socket.SOCK_DGRAM)   # the UDP protocol 
. 4 server.bind (( ' 127.0.0.1 ' , 8080 ))
 . 5  # the UDP connection pool it is unnecessary to provide the half half-connection pool does not concept 
. 6  
. 7  # because there is no two-way communication channel does not need to accept the direct circulation is 
. 8  the while True:
 . 9      data, server.recvfrom addr = (1024 )
 10      Print ( ' data: ' , data)   # client message sent 
. 11      Print ( ' address: ' , addr)  # Client's address 
12      server.sendto (data.upper (), addr)

client:

Import Socket 

Client = socket.socket (type = socket.SOCK_DGRAM)
 # without establishing a connection directly to the communication cycle 
the server_address = ( ' 127.0.0.1 ' , 8080 )
 the while True: 
    client.sendto (B ' Hello ' , the server_address) 
    Data, addr = client.recvfrom (1024 )
     Print ( ' service data sent by the end ' , data)
     Print ( ' server address ' , addr)

Three differences between TCP and UDP,

Datagram Protocol (own header), so there is no problem sticking package

server:

 1 import socket
 2 
 3 
 4 server = socket.socket(type=socket.SOCK_DGRAM)
 5 server.bind(('127.0.0.1',8080))
 6 
 7 
 8 # while True:
 9 data, addr = server.recvfrom(1024)
10 print(data)
11 data, addr1 = server.recvfrom(1024)
12 print(data)
13 data, addr2 = server.recvfrom(1024)
14 print(data)

  client:

import socket

client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1',8080)

client.sendto(b'what u doing?',server_address)
client.sendto(b'what u doing?',server_address)
client.sendto(b'what u doing?',server_address)

Four, socketserver module

  TCP protocol in use:

  server:

 1 import socketserver
 2 
 3 class MyServer(socketserver.BaseRequestHandler):
 4     def handle(self):
 5         while True:
 6             data = self.request.recv(1024)
 7             print(self.client_address) #客户端地址
 8             print(data.decode('utf-8'))
 9             self.request.send(data.upper())
10 
11 if __name__ == '__main__':
12     '''
13     A client is connected automatically to the method defined from the handle class to handle
 14      '' ' 
15      Server socketserver.ThreadingTCPServer = (( ' 127.0.0.1 ' , 8080), MyServer) # Create 
16      server.serve_forever () # start the service object

  client:

1 import socket
2 
3 client = socket.socket()
4 client.connect(('127.0.0.1',8080))
5 
6 while True:
7     client.send(b'hello')
8     data = client.recv(1024)
9     print(data.decode('utf-8'))

UDP protocol in use:

server:

 1 import socketserver
 2 
 3 class MyServer(socketserver.BaseRequestHandler):
 4     def handle(self):
 5         while True:
 6             data,sock = self.request
 7             print(self.client_address)#客户端的地址
 8             print(data.decode('utf-8'))
 9             sock.sendto(data.upper(),self.client_address)
10 
11 if __name__ == '__main__':
12     '''
13     A client is connected automatically to handle custom method to handle
 14      '' ' 
15      Server socketserver.ThreadingUDPServer = (( ' 127.0.0.1 ' , 8080), MyServer) # Create a TCP-based object 
16      server.serve_forever () # start the service object

  client:

 1 import socket
 2 import time
 3 
 4 client = socket.socket(type = socket.SOCK_DGRAM)
 5 server_address = ('127.0.0.1',8080)
 6 
 7 while True:
 8     client.sendto(b'hey boy',server_address)
 9     data,addr = client.recvfrom(1024)
10     print(data.decode('utf-8'),addr)
11     time.sleep(1)

Fifth, to implement a simple version of the QQ

server:

1 import socket
2 server = socket.socket(type=socket.SOCK_DGRAM)
3 server.bind(('127.0.0.1',8080))
4 
5 while True:
6     data,addr = server.recvfrom(1024)
7     print(data.decode('utf-8'))
8     msg = input('>>>: ').strip()
9     server.sendto(msg.encode('utf-8'),addr)

  client1:

 1 import socket
 2 
 3 client = socket.socket(type=socket.SOCK_DGRAM)
 4 server_address = ('192.168.12.58',8080)
 5 
 6 while True:
 7     msg = input('>>>:')
 8     msg = "来自客户端1的消息: %s"%msg
 9     client.sendto(msg.encode('utf-8'),server_address)
10     data,addr = client.recvfrom(1024)
11     print(data.decode('utf-8'))

  client2:

 1 import socket
 2 
 3 client = socket.socket(type=socket.SOCK_DGRAM)
 4 server_address = ('192.168.12.58',8080)
 5 
 6 while True:
 7     msg = input('>>>:')
 8     msg = "来自客户端2的消息: %s"%msg
 9     client.sendto(msg.encode('utf-8'),server_address)
10     data,addr = client.recvfrom(1024)
11     print(data.decode('utf-8'))

  client3:

 1 import socket
 2 
 3 client = socket.socket(type=socket.SOCK_DGRAM)
 4 server_address = ('192.168.12.58',8080)
 5 
 6 while True:
 7     msg = input('>>>:')
 8     msg = "来自客户端3的消息: %s"%msg
 9     client.sendto(msg.encode('utf-8'),server_address)
10     data,addr = client.recvfrom(1024)
11     print(data.decode('utf-8'))

 

 

Guess you like

Origin www.cnblogs.com/spencerzhu/p/11323970.html
upd
UPD
UPD