基于python的tcp的端口转发程序

基于python的socket套接字,对tcp数据包进行转发

import socket
def main():
    
    s = socket.socket()
    # 本机ip地址和接收端口
    host = '10.168.1.188'
    port = 8011
    # 目标ip地址和端口
    host2 = '39.99.48.243'
    port2 = 6688
    #绑定本地接收端的IP地址和端口
    s.bind((host, port))
    #启动本地监听
    s.listen(1)
    #监听主题套接字开始接受
    c, addr = s.accept()
    #监听套接字收到
    recv_data = c.recv(1024)
    print('收到' + host + ':' + str(port) + '的数据:')
    print(recv_data)
    #s2为发送程序,先与目标端口建立联系
    s2 = socket.socket()
    s2.connect((host2, port2))
    print('转发到' + host2 + ':' + str(port2) + '的数据:')
    print(recv_data)
    #使用发送程序将数据发出
    s2.sendall(recv_data)
    #接收服务器的回复信息
    accept_data = s2.recv(1024)
    print('转发收到' + host2 + ':' + str(port2) + '的数据:')
    print(accept_data)
    print('转发回' + host 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一个基于TCP协议的聊天程序,可以分为以下几个步骤: 1. 连接:客户端向服务器发起连接请求,建立TCP连接。 2. 登录:客户端输入用户名和密码进行登录,服务器进行验证。 3. 聊天:登录成功后,客户端与服务器之间可以进行聊天交互,客户端发送消息给服务器,服务器再将消息转发给其他客户端。 4. 退出:客户端可以随时退出聊天室,客户端发送退出消息给服务器,服务器将客户端从聊天室中删除。 下面是一个简单的基于TCP协议的聊天程序的示例: 服务器端代码: ```python import socket HOST = '' # 监听所有可用的接口 PORT = 8888 # 监听的端口号 # 创建socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) print('Waiting for connection...') # 等待客户端连接 conn, addr = s.accept() print('Connected by', addr) # 循环接收消息并转发给其他客户端 while True: data = conn.recv(1024) if not data: break print('Received message:', data.decode()) conn.sendall(data) # 关闭连接 conn.close() ``` 客户端代码: ```python import socket HOST = 'localhost' # 服务器的主机名或IP地址 PORT = 8888 # 服务器使用的端口号 # 创建socket对象 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) # 登录 username = input('Enter your username: ') password = input('Enter your password: ') s.sendall(f'{username}:{password}'.encode()) # 循环发送消息 while True: message = input('Enter message: ') s.sendall(message.encode()) data = s.recv(1024) print('Received message:', data.decode()) ``` 这个聊天程序的实现比较简单,只能同时连接一个客户端。如果需要支持多个客户端同时连接,需要使用多线程或异步编程方式来实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值