欢迎光临~扬州用友(畅捷通)软件--专业网络软件开发服务商-扬州七龙网络科技有限公司
  咨询电话:15952766660

python

tcp编程语句示例(含udp)

TCP服务端

"""

TCP SERVER tcp套接字服务端流程

注意:

功能性代码,注重流程和函数使用



"""


import socket

# 创建TCP套接字

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

# 绑定地址

socketfd.bind(("0.0.0.0",19831))

# 设置监听

socketfd.listen(5)

while True:

    # 阻塞等待处理连接

    print("正在等待客户端连接……")

    connfd,addr=socketfd.accept()

    print("客户端地址为:",addr)#打印连接的客户端地址

    while True:

    # 收发消息

        data=connfd.recv(1024)

        if not data:

            break


        print(" 收到:",data.decode())

        n=connfd.send(b"Thanks")#发送字节串

        print("发送了%d字节"%n)

    # 关闭套接字

    connfd.close()

socketfd.close()

TCP客户端

"""




"""

from socket import *

# 创建TCP套接字

sockfd=socket()#默认参数就是TCP套接字

# 连接服务器

server_addr=("127.0.0.1",19831)


sockfd.connect(server_addr)

while True:

# 发送消息

    data=input("请输入要发送的消息:")

    if not data:


    # if data=="q":#if not data如果客户端为空的花说明客户端退出

        break

    sockfd.send(data.encode())


    data=sockfd.recv(1024)

    print("来自服务器的消息" ,data.decode())#打印接受内容

sockfd.close()



UDP服务端

from socket import *




sockfd=socket(AF_INET,SOCK_DGRAM)



# 绑定地址


server_addr=("127.0.0.1",19833)

sockfd.bind(server_addr)


# 循环收发消息

while True:

    data,addr=sockfd.recvfrom(1024)



    print("客户端的地址为:",addr)

    print("收到的消息:",data.decode())


    sockfd.sendto(b"thanks",addr)




sockfd.close()


UDP客户端

from socket import *


# 服务器地址

addr=("127.0.0.1",19833)

# 创建套接字

sockfd=socket(AF_INET,SOCK_DGRAM)

# 循环收发消息

while True:

    data=input("输入消息:")

    if not data:

        break

    sockfd.sendto(data.encode(),addr)

    msg,addr=sockfd.recvfrom(1024)

    print("来自服务器的消息:",msg.decode())


sockfd.close()

UDP广播服务端

"""

 广播发送端

 1、创建UDP套接字

 2、设置可以发送广播

 3、循环向广播地址发送


"""

from socket import *

from time import sleep

dest=("192.168.7.255",19838)

s=socket(AF_INET,SOCK_DGRAM)

s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)


data=input("请输入广播内容:")



while True:

    sleep(2)

    s.sendto(data.encode(),dest)#目标地址就是广播地址

UDP广播接收端

"""

广播的接收端


1、创建UDP套接字

2、设置套接字可以发送接收广播(setsockopt)

3、选择接收的端口

4、接收广播


"""

from socket import  *

s=socket(AF_INET,SOCK_DGRAM)

# 设置套接字接收广播

s.setsockopt(SOL_SOCKET,SO_BROADCAST,1)

s.bind(("0.0.0.0",19838))

while True:

    msg,addr=s.recvfrom(1024)

    print(msg.decode())

HTTP服务端

"""

httpserver v1.0

基本要求: 1. 获取来自浏览器的请求

         2. 判断请求内容是否为/

         3. 如果是,则将 index.html 发送给浏览器

            如果不是,则告知浏览器 sorry

         4. 注意组织http响应格式, 判断 200 or 404

"""


from socket import *


# 处理客户端请求

def request(connfd):

    # 直接获取HTTP请求

    data = connfd.recv(4096)

    # 防止浏览器断开

    if not data:

        return


    # 提取请求内容

    request_line = data.decode().split('\n')[0]

    info = request_line.split(' ')[1]


    # 判断请求内容是否为 /

    if info == '/':

        with open('index.html',encoding="utf-8") as f:

            response="HTTP/1.1 200 OK\r\n"

            response+="Content-Type:text/html\r\n"

            response+="\r\n"

            response+=f.read()


    else:

        response = "HTTP/1.1 404 Not Found\r\n"

        response += "Content-Type:text/html\r\n"

        response += "\r\n"

        response += "<h1>Sorry....</h1>"

    # 发送给浏览器

    connfd.send(response.encode())


# 搭建tcp服务

sockfd = socket()

sockfd.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)

sockfd.bind(('0.0.0.0',8080))

sockfd.listen(5)

while True:

    connfd,addr = sockfd.accept()

    print("Connect from",addr)

    request(connfd)  # 具体处理客户端请求


TCP文件发送

from socket import *

s=socket()


s.connect(("127.0.0.1",19831))

f=open("7.jpg","rb")

while True:

    # 边读取边发送

    data=f.read(1024)

    if not data:

        break

    s.send(data)


f.close()

s.close()

TCP文件接收

from socket import *

s=socket()


s.bind(("127.0.0.1",19831))

s.listen(5)

c,addr=s.accept()

print("connect from",addr)

# 接受思路:1、WB写打开新文件,因为文件有可能是二进制文件。2、recv内容write边接收边写入

# 打开文件

f=open("7hl.jpg","wb")

# 循环接受写入文件


while True:

    data=c.recv(1024)

    if not data:

        break

    f.write(data)

f.close()

c.close()

s.close()

udp查询单词服务端

"""


使用UDP客户端查询单词,得到单词的解释,如果没有该单词则得到 没有单词。客户端可以循环输入单词直到输入空退出


"""

from socket import *

def find_word(word):

    f = open('dict.txt')


    # 每次获取一行

    for line in f:

        w = line.split(' ')[0]

        if w > word:

            f.close()

            return "没有找到该单词"


        elif w == word:

            f.close()

            return line

    else:

        f.close()

        print("没找到该单词")




sockfd=socket(AF_INET,SOCK_DGRAM)



# 绑定地址


server_addr=("127.0.0.1",19835)

sockfd.bind(server_addr)


# 循环收发消息

while True:

    data,addr=sockfd.recvfrom(1024)

    # 查单词

    result=find_word(data.decode())



    print("客户端的地址为:",addr)

    print("收到的消息:",data.decode())


    sockfd.sendto(result.encode(),addr)




sockfd.close()

UDP查询单词客户端

"""


使用UDP客户端查询单词,得到单词的解释,如果没有该单词则得到 没有单词。客户端可以循环输入单词直到输入空退出


"""


from socket import *


# 服务器地址

addr=("127.0.0.1",19835)

# 创建套接字

sockfd=socket(AF_INET,SOCK_DGRAM)

# 循环收发消息

while True:

    data=input("输入单词:")

    if not data:

        break

    sockfd.sendto(data.encode(),addr)#发送单词

    msg,addr=sockfd.recvfrom(1024)#返回的单词解释

    print("来自服务器的消息:",msg.decode())#打印出来


sockfd.close()





上一条:IO网络编程 下一条:并发编程

联系我们

QQ:274381

电 话:15952766660

微信:15952766660

邮 箱:webmaster@7hl.net

地 址:扬州市广陵区信息产业基地三号楼

用手机扫描二维码关闭
二维码