一 .套接字udp協議
1. 基於udp協議的socket
tcp是基於鏈結的,必須先啟動服務端,然後再啟動客戶端去鏈結服務端
import socketudp_sk = socket.socket(type=socket.sock_dgram) #建立乙個伺服器的套接字
udp_sk.bind(('127.0.0.1',9000)) #繫結伺服器套接字
msg,addr = udp_sk.recvfrom(1024)
print(msg)
udp_sk.sendto(b'hi',addr) # 對話(接收與傳送)
udp_sk.close() # 關閉伺服器套接字
client端1import socket案例qq聊天ip_port=('127.0.0.1',9000)
udp_sk=socket.socket(type=socket.sock_dgram)
udp_sk.sendto(b'hello',ip_port)
back_msg,addr=udp_sk.recvfrom(1024)
print(back_msg.decode('utf-8'),addr)
server importsocket
ip_port=('
127.0.0.1
',8081)
udp_server_sock=socket.socket(socket.af_inet,socket.sock_dgram)
udp_server_sock.bind(ip_port)
while
true:
qq_msg,addr=udp_server_sock.recvfrom(1024)
print('
來自[%s:%s]的一條訊息:\033[1;44m%s\033[0m
' %(addr[0],addr[1],qq_msg.decode('
utf-8
')))
back_msg=input('
回覆訊息:
').strip()
udp_server_sock.sendto(back_msg.encode(
'utf-8
'),addr)
server
client #_*_coding:utf-8_*_import
socket
bufsize=1024udp_client_socket=socket.socket(socket.af_inet,socket.sock_dgram)
qq_name_dic=
while
true:
qq_name=input('
請選擇聊天物件:
').strip()
while
true:
msg=input('
請輸入訊息,回車傳送,輸入q結束和他的聊天:
').strip()
if msg == '
q':break
ifnot msg or
not qq_name or qq_name not
in qq_name_dic:continue
udp_client_socket.sendto(msg.encode(
'utf-8
'),qq_name_dic[qq_name])
back_msg,addr=udp_client_socket.recvfrom(bufsize)
print('
來自[%s:%s]的一條訊息:\033[1;44m%s\033[0m
' %(addr[0],addr[1],back_msg.decode('
utf-8
')))
udp_client_socket.close()
client
server from socket import *from time import
strftime
ip_port = ('
127.0.0.1
', 9000)
bufsize = 1024tcp_server =socket(af_inet, sock_dgram)
tcp_server.setsockopt(sol_socket,so_reuseaddr,1)
tcp_server.bind(ip_port)
while
true:
msg, addr =tcp_server.recvfrom(bufsize)
print('
===>
', msg)
ifnot
msg:
time_fmt = '
%y-%m-%d %x
'else
: time_fmt = msg.decode('
utf-8')
back_msg =strftime(time_fmt)
tcp_server.sendto(back_msg.encode(
'utf-8
'), addr)
tcp_server.close()
server
client from socket import *ip_port=('127.0.0.1
',9000)
bufsize=1024tcp_client=socket(af_inet,sock_dgram)
while
true:
msg=input('
請輸入時間格式(例%y %m %d)>>:
').strip()
tcp_client.sendto(msg.encode(
'utf-8
'),ip_port)
data=tcp_client.recv(bufsize)
client
UDP網路程式設計套接字
ip協議有兩個版本,乙個是ipv4,乙個是ipv6。ip位址是在ip協議中,用來標識網路中不同的主機的位址。對於ipv4來說,ip位址是乙個4位元組,32位的整數。在資料報頭部的兩個ip位址,乙個叫源ip位址,乙個叫目的ip位址 埠號port 必須是眾所周知的,並且不能隨意修改 埠號是乙個2個位元組...
UDP套接字程式設計
與面向連線的協議相比,面向無連線協議極為不同。其中乙個重要的不同點就是客戶端與伺服器之間不必建立連線。對於udp套接字程式設計而言,伺服器建立套接字後,呼叫bind 函式將套接字與準備接收資料的介面繫結在一起。和tcp程式設計不同的是,應用程式不必呼叫listen 和accept 函式等待客戶端的連...
UDP套接字程式設計
udp是使用者資料報協議,與tcp協議一樣,在網路中處理資料報,是一種無連線的傳輸層協議,具有不可靠性,udp有不提供資料報分組 組裝和不能對資料報進行排序的缺點,也就是說,當報文傳送之後,是無法得知其是否安全完整到達的。基於udp的客戶端伺服器 伺服器 include include includ...