三 網路程式設計 套接字UDP協議)

2022-07-13 17:30:11 字數 3429 閱讀 7608

一 .套接字udp協議

1. 基於udp協議的socket

tcp是基於鏈結的,必須先啟動服務端,然後再啟動客戶端去鏈結服務端

import socket

udp_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端1

import socket

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)

案例qq聊天

server

import

socket

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...