Socket 编程-------TCP 和UDP

Socket 编程——-TCP、UDP 服务器端和客户端

  • TCP协议的3次握手
  • HTTP的常用请求方式
  • 基于TCP 的Socket 通信的流程图
  • TCP 服务器端及 客户端代码块
  • UDP服务器端及 客户端代码块

TCP协议的3次握手:

三次握手过程:
1. 建立连接时,客户端发送SYN包到服务器,并进入SYN_SENT状态,等待服务器确认。
2. 服务器收到SYN包,反馈一个SYN+ACK包,进入SYN_RECV状态。
3. 客户端接到服务器的SYN+ACK包,向服务器发送确认包ACK,同时进入ESTABLISHED状态,三次握手完成。


HTTP的常用请求方式:

  • GET 从访问地址中获取信息(头和体)
  • HEAD 只获取头信息,若使用GET,则无需显式声明使用HAED
  • POST 客户端通过POST方法向服务器提交新的数据,服务器必须保证数据完整保存,并不允许出现重复的数据提交。


基于TCP 的Socket 通信的流程图:

这里写图片描述



TCP代码块

服务器端:
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()

UDP代码块


服务器端:
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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值