13.Python网络编程—Socket

13.1 基本概念

  • 套接字:每台主机有一个唯一的主机地址标识,同时主机内还有标识自己进程的序号id,称作端口,将这两个标识符结合就构成了一个套接字(socket),这个套接字能唯一标识网络中的一个进程。
  • 运输层的协议主要有UDP和TCP协议
    • 区别
      • UDP是无连接、不可靠协议
      • TCP是有连接、可靠协议

13.2 socket概念

13.3 Tcp协议和Udp协议

13.4 Socket编程



13.5 实验

13.5.1 socket服务端

服务端
In:

import socket,sys

In:

srv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 9990
srv_sock.bind((host,port))
srv_sock.listen(5)

文件下载
In:

def get_file(file_name):
    try:
        with open(file_name,'r',encoding='utf-8') as f:
            content = f.read()
    except:
        print("没有此文件!")
        content = '1'
    finally:
        return content

In:

while True:
    client_sock,addr = srv_sock.accept()
    file_name = client_sock.recv(1024).decode('utf-8') #接收-文件名
    content = get_file(file_name) #获取文件内容,函数get_file
    client_sock.send(content.encode('utf-8')) #发送内容
    client_sock.close()

out:

客户端连接地址:('192.168.89.2', 49806)
需要下载:output.txt
内容:
我来到山西五台山
我来到北京天安门

In:

# while True:
#     client_sock,addr = srv_sock.accept()
#     print(f"客户端连接地址:{addr}")
#     msg = "欢迎连接到服务端" + "\n"
#     client_sock.send(msg.encode('utf-8'))
#     client_sock.close()

13.5.2 socket客户端

In:

import socket,sys

In:

client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 9990
client_sock.connect((host,port))

In:

file_name = str(input("请输入文件名:"))
client_sock.send(file_name.encode('utf-8'))  #发送文件名
content = client_sock.recv(2048).decode('utf-8')
with open("recv"+file_name,"w",encoding='utf-8') as f:
    f.write(content)

out:

请输入文件名:output.txt

In:

client_sock.close()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值