网络编程

一、在编程语言中我们会使用socket(套接字)实现tcp通信 udp通信

①tcp通信原理举例 : 特点:顺序不乱,不丢包

当我们发送 4000字节的内容 一个数据包上线 1500字节,所以发送内容会分为 3个包,每个包都有一个编号。在正式发送数据之前会告知对方要收3个包,

如果发生丢包,对方会告知我们补发一个。 

②udp通信协议: 强调实时性。

s = input("请输入一个字符串")

print(s)

二、TCPServer

import socket

AF_INET:使用ipv4网络

  SOCK_STREAM:以网络流形式创建socket

1.创建套接字对象

tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

 2.绑定当前ip和port

tcp_server.bind(('', 8888))

 3.开启服务监听

tcp_server.listen(10)

 4.等待客户端连接,客户端连接后会产生一个专门跟客户端通信的套接字

tcp_waiter, info = tcp_server.accept()

print(f"info======={info}")

while True:服务器这边只接收数据,并且把接受到的数据打印到屏幕上

       data = tcp_waiter.recv(1024)

       if not data:

           print("客户端已断开连接")

           break

       s = data.decode()

       print(s)

三、thread线程

import threading

import time

class MyThread(threading.Thread):

    def __init__(self, content):

        super().__init__()

        self.content = content

    def run(self):线程要执行业务逻辑写在这里

        while True:

            print(self.content)

            time.sleep(1)

th1 = MyThread("我是线程1号")

th2 = MyThread("我是线程2号")

th1.start()

th2.start()

四、TCPClient

import socket

 1.创建tcp的套接字对象

tcp_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

 2.连接服务端

tcp_client.connect(('120.26.243.208', 8888))

while True:

    s = input("请输入你要发送的信息:")

tcp_client.send(s.encode())

五、UDPClient

import socket

import threading

class MsgHandler(threading.Thread):

    def __init__(self, client):

        super().__init__()

        self.client = client

    def run(self):

        while True:

            data, info = self.client.recvfrom(1024)

            print(data.decode())

1.创建udp套接字

udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

th = MsgHandler(udp_client)

2.开启线程处理udp信息接收

th.start()

while True:

      s = input("我:")

3.udp发送主线程

udp_client.sendto(s.encode(), ('127.0.0.1', 8888))

六、UDPSever

import socket

1.创建udp套接字

udp_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

2.绑定ip和port

udp_server.bind(('', 8888))

info_ls = set()

while True:  3.等待消息

data, info = udp_server.recvfrom(1024)

print(data.decode())

info_ls.add(info)

4转发消息

for i in info_ls:

buff = str(info).encode() + ":".encode() + data

udp_server.sendto(buff, i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值