美文网首页
本地自建服务端、客户端请求

本地自建服务端、客户端请求

作者: 呆呆笨 | 来源:发表于2020-11-23 17:22 被阅读0次

自学完python3基础知识后,尝试的第一个demo:(直接上代码,复制可直接用)

服务端:

# 文件名:server.py

# 导入 socket、sys 模块
import socket
import sys

# 获取本地ip
def get_host_ip():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 114.114.114.114:是国内移动、电信和bai联du通通用的DNS。
        # 8.8.8.8:是GOOGLE公司提供的DNS,该地址是全球通用的。
        s.connect(('114.114.114.114', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()
    return ip
    
# 创建 socket 对象
#获取tcp/ip套接字
tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#获取udp/ip套接字
#udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 获取ip(也可直接写127.0.0.1)
host = get_host_ip()

port = 9999

# 绑定端口号
tcpSock.bind((host, port))

# 设置最大连接数,超过后排队
tcpSock.listen(5)

print('开始监听')
while True:# 不断监听
    print('等待接收')
    
    # 建立客户端连接
    clientsocket,addr = tcpSock.accept()
    
    # 打印客户端地址
    print("连接地址: %s" % str(addr))
    
    # 接收客户端消息(小于 1024 字节)
    client_msg = clientsocket.recv(1024)
    print('client msg: %s' %client_msg.decode())
    
    # 相应客户端信息(发送信息给客户端)
    msg = '欢迎访问!'+ "\r\n"
    clientsocket.send(msg.encode('utf-8'))
    
    # 关闭客户端套接字
    clientsocket.close()
    
#关闭服务器套接字(可选)
tcpSock.close()

客户端:

# 文件名:client.py

# 导入 socket、sys 模块
import socket
import sys

# 获取本地ip
def get_host_ip():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 114.114.114.114:是国内移动、电信和bai联du通通用的DNS。
        # 8.8.8.8:是GOOGLE公司提供的DNS,该地址是全球通用的。
        s.connect(('114.114.114.114', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()
    return ip
    
    
# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取ip(也可直接写127.0.0.1)
host = get_host_ip()

# 设置端口号
port = 9999

# 连接服务,指定主机和端口
s.connect((host, port))

# 给服务端发送消息
s.send('我来逛逛!'.encode('utf-8'))

# 接收服务端相应的数据(小于 1024 字节)
msg = s.recv(1024)

# 关闭客户端套接字
s.close()

print (msg.decode('utf-8'))

使用:

我是在MAC上测试,创建两个终端窗口,先运行服务端的代码

python3 /Users/xxx/server.py

再在另一个窗口运行客户端代码

python3 /Users/xxx/client.py

注:不知道路径的直接拉文件就行

补充:

在获取本地ip时,网上很多都是教如下方式获取,但是我获取不到(别人能获取到),查资料是说计算机名称取得有问题(迷茫),所以改用demo中的方法获取ip

import socket
获取本计算机的名称
hostname = socket.gethostname()
获取本计算机IP
ip = socket.gethostbyname(hostname)

相关文章

  • 本地自建服务端、客户端请求

    自学完python3基础知识后,尝试的第一个demo:(直接上代码,复制可直接用) 服务端: 客户端: 使用: 我...

  • 接口自动化测试中代理的配置

    请求流程:客户端发请求给服务端,服务端返回响应给客户端。 使用代理:客户端发请求给代理,代理转发请求给服务端,服务...

  • 服务超时总结

    介绍 请求超时,客户端给服务端发送请求时超时,此时服务端没有收到客户端的请求; 服务端内部超时,服务端可能存在DB...

  • 简单的HTTP协议

    HTTP协议用于客户端和服务端之间的通信: 客户端与服务端:(请求->处理->响应) 请求报文是由请求方法、请求 ...

  • HTTP 请求头与相应头

    常见的请求头和相应头: 1. 请求(客户端->服务端[request]) 2. 响应(服务端->客户端[respo...

  • 六、消息和异步

    一、异步的常见形态: 通知: 请求异步响应:客户端发送请求到服务端,服务端异步相应请求。客户端不会阻塞,而且被设置...

  • 关于http长连接短连接&tcp连接&socket连接&unix

    一,http连接 http协议是 请求/应答 模型。客户端发送请求,服务端对请求做一次响应。服务端只能在客户端发送...

  • 周报 第一期

    一、 概念 客户端:客户端与服务端对应,发送请求接受数据并将接受的数据展示出来。服务端:接受客户端发来的请求,并会...

  • 无镜--kafka之延迟操作

    服务端在处理客户端的请求,针对不同的请求,可能不会立即返回响应结果给客户端。在处理这类请求时,服务端会为这类请求创...

  • http请求 方法及请求头、url、请求体

    1.http 请求过程 c发送请求到服务端(url)->服务端进行解析->解析内容返回客户端->客户端响应进行展示...

网友评论

      本文标题:本地自建服务端、客户端请求

      本文链接:https://www.haomeiwen.com/subject/wkpmiktx.html