栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

”21天好习惯“第一期-19

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

”21天好习惯“第一期-19

socket 编程实验

实验内容

1.编写一个基于UDP协议的客户机与服务器程序,实现相互通讯。

服务器端:

from socket import *

host = '10.100.118.128'
port = 60000
addr = (host, port)

s = socket(AF_INET, SOCK_DGRAM)
s.bind(addr)

print('等待客户端连接...')
while True:
    data, addr = s.recvfrom(1024)
    print(str(addr) + ':' + str(data.decode('utf-8')))
    msg = '收到。'
    s.sendto(msg.encode('utf-8'), addr)

s.close()

客户端

from socket import *

host = '10.100.118.128'
port = 60000
addr = (host, port)

s = socket(AF_INET, SOCK_DGRAM)
while True:
    msg = input('向服务端发送:')
    s.sendto(msg.encode('utf-8'), addr)
    data, addr = s.recvfrom(1024)
    print(addr, ':', data.decode('utf-8'))
s.close

2.编写一个基于TCP协议的客户机与服务器程序,实现相互通讯。
服务器端:

import socket

# 开启ip和port
ip_port = ('10.100.118.128', 60001)
# 生成一个句柄
sk = socket.socket()
# 绑定ip和port
sk.bind(ip_port)
# 最多连接数
sk.listen(5)

# 开启死循环
print('server waiting...')
# 等待链接 阻塞
conn, addr = sk.accept()
# 获取客户端请求
print('链接成成功, 客户端为:', addr)

while True:
    client_data = conn.recv(1024)
    print('[收到客户端数据]:' + client_data.decode('utf-8'))

    if client_data == 'q':
        break

    # 发送数据
    msg = input('回复客户端:>>>')
    conn.sendall(msg.encode('utf-8'))

# Close
conn.close()
sk.close()

客户端:

import socket
# 服务端ip和port
ip_port = ('192.168.2.102', 60000)
# 生成一个句柄
sk = socket.socket()
# 请求链接服务器
sk.connect(ip_port)

while True:
    msg = input('向服务端发送:')
    # 发送数据
    sk.sendall((msg.encode('utf-8')))

    if msg == 'q':
        break

    # 接收数据
    server_reply = sk.recv(1024)

    if not server_reply:
        break

    print('[收到服务端数据]:' + server_reply.decode('utf-8'))

# Close
sk.close()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457997.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号