Python网络编程2021-08-27

网络编程


TCP编程

客户端

'''
客户端:创建TCP连接时,主动发起连接的叫做客户端
服务端:接收客户端的连接
'''
import socket
#1、创建一个socket
#参数1:指定协议AF_INET或AF_INET6
#参数2:SOCK_STREAM执行可使用面向流的TCP协议
sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#建立连接
#参数:是一个元组,第一个参数为要链接的服务器服务器IP地址,第二个参数为端口
sk.connect(("www.sina.com.cn", 80))

sk.send(b'GET / HTTP/1.1\r\nHost: www.sina.com.cn\r\nConnection: close\r\n\r\n')
#等待接收数据
data = []
while True:
    #每次接收1k数据
    tempData = sk.recv(1024)
    if tempData:
        data.append(tempData)
    else:
        break
dataStr = (b''.join(data)).decode("utf-8")
#断开连接
sk.close()
# print(dataStr)
headers, HTML = dataStr.split('\r\n\r\n', 1)
print(headers)
print(HTML)

客户端与服务器间的数据交互

client.py

import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("192.168.0.102", 8080))
while True:
    data = input("请输入给服务器发送的数据")
    client.send(data.encode("utf-8"))
    info = client.recv(1024)
    print("服务器说:", info.decode("utf-8"))

service.py

import socket
#创建一个socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#绑定IP端口
server.bind(('192.168.0.102',8080))#ip地址,端口
#监听
server.listen(5)
print("服务器启动成功。。。。。。。。。。。。。")
#等待连接
clientSocket, clientAddress = server.accept()
print("%s----%s连接成功"%(str(clientAddress),clientAddress))
while True:
    data = clientSocket.recv(1024)
    print("客户端说:" + data.decode("utf-8"))
    sendData = input("输入返回给客户端的数据")
    clientSocket.send(sendData.encode('utf-8'))
'''
while True:
    #等待客户端连接
    clientSocket, clientAddress = server.accept()
    #启动一个线程,将当前连接的clientSocket交给线程
'''


UDP编程

客户端与服务端通信

client.py

import socket
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
    data = input("请输入数据")
    client.sendto(data.encode("utf-8"), ("192.168.0.102", 8900))
    info = client.recv(1024).decode('utf-8')
    print("服务器说:", info)

service.py

import socket
udpServer = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpServer.bind(("192.168.0.102", 8900))
while True:
    data, addr = udpServer.recvfrom(1024)
    print("客户端说:", data.decode("utf-8"))
    info = input("请输入数据")
    udpServer.sendto(info.encode("utf-8"), addr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值