Socket 程式設計 TCP 和UDP

2021-08-25 14:02:20 字數 1668 閱讀 3790

三次握手過程:

1. 建立連線時,客戶端傳送syn包到伺服器,並進入syn_sent狀態,等待伺服器確認。

2. 伺服器收到syn包,反饋乙個syn+ack包,進入syn_recv狀態。

3. 客戶端接到伺服器的syn+ack包,向伺服器傳送確認包ack,同時進入established狀態,三次握手完成。

伺服器端:

import socket

import datetime

host='0.0.0.0'

port=3434

s= socket.socket(socket.af_inet,socket.sock_stream)#使用ipv4,協議使用tcp

s.bind((host,port))

s.listen(1)

while

true:

conn,addr=s.accept()

print('client %s connected!'%str(addr))

dt=datetime.datetime.now()

message='current time is '+str(dt)

conn.send(message.encode())

print('sent: ',message)

conn.close()

客戶端:

import socket

import datetime

host='127.0.0.1'

port=3434

s= socket.socket(socket.af_inet,socket.sock_stream)#使用ipv4,協議使用tcp

s.connect((host,port))

print('connect %s:%d ok'%((host,port)))

data=s.recv(1024)

print("received: ",data)

s.close()

伺服器端:

import socket

host='0.0.0.0'

port=3434

s=socket.socket(socket.af_inet,socket.sock_dgram)

s.bind((host,port))

while

true:

data,addr=s.recvfrom(1024)

print('received:%s from %s'%(data,str(addr)))

s.close()

客戶端:

import socket

host='127.0.0.1'

port=3434

s=socket.socket(socket.af_inet,socket.sock_dgram)

data="hello udp!"

s.sendto(data.encode(),(host,port))

print('sent:%s to %s :%d'%(data,host,port ))

s.close()

socket程式設計 TCP與UDP

1.tcp與udp的優缺點 2.tcp與udp在遊戲中的應用場景 tcp 可以容忍延遲並且有很好的遮蔽延遲的設計,如紙牌類和mmo udp 不能容忍延遲,如dota類和動作類 3.tcp與udp 實現 只實現了基本收發功能,沒有進行合理性分析,tcp有客戶端和伺服器之分,udp則沒有但考慮到區分 中...

TCP和UDP的Socket程式設計實驗

linux socket 函式庫是從 berkeley 大學開發的 bsd unix 系統中移植過來的。bsd socket 介面是在眾多 unix 系統中被廣泛支援的 tcp ip 通訊介面,linux 下的 socket 程式設計,除了微小的差別之外,也適用於大多數其它 unix 系統。sock...

Socket基於TCP和UDP程式設計基本步驟

tcp程式設計的伺服器端一般步驟是 1 建立乙個socket,用函式socket 2 設定socket屬性,用函式setsockopt 可選 3 繫結ip位址 埠等資訊到socket上,用函式bind 4 開啟監聽,用函式listen 5 接收客戶端上來的連線,用函式accept 6 收發資料,用函...