Python的TCP编程

目录

  • 前言
  • server.py
  • client.py
  • 测试

前言

server.py

# -*- coding: utf-8 -*-
import socket
import threading
import time

# 每个连接都必须创建新线程(或进程)来处理,否则,
# 单线程在处理连接的过程中,无法接受其他客户端的连接
def tcplink(sock, addr):
    print(‘Accept new connection from %s:%s...‘ % addr)
    sock.send((‘Welcome!‘).encode(‘utf-8‘))
    while True:
        data = sock.recv(1024)
        time.sleep(1)
        if not data or data.decode(‘utf-8‘) == ‘exit‘:
            break
        sock.send((‘Hello, client user %s.‘ %
                   data.decode(‘utf-8‘)).encode(‘utf-8‘))
    sock.close()
    print(‘Connection from %s:%s closed.‘ % addr)

# 创建一个socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 监听端口
s.bind((‘127.0.0.1‘, 8080))
# 配置等待连接的最大数量
s.listen(5)
print(‘Waiting for connection...‘)

while True:
    # 接受一个新连接(等待并返回一个客户端的连接)
    sock, addr = s.accept()
    # 创建新线程来处理TCP连接
    t = threading.Thread(target=tcplink, args=(sock, addr))
    t.start()

client.py

# -*- coding: utf-8 -*-
import socket
import threading
import time

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接
s.connect((‘127.0.0.1‘, 8080))
# 接收欢迎消息
print(s.recv(1024).decode(‘utf-8‘))
# 发送数据
for data in [(‘aaa‘).encode(‘utf-8‘), (‘bbb‘).encode(‘utf-8‘)]:
    s.send(data)
    print(s.recv(1024).decode(‘utf-8‘))
s.send((‘exit‘).encode(‘utf-8‘))
s.close()

测试

启动服务端

python server.py

启动客户端

python client.py

注意:客户端程序运行完毕就退出了,而服务器程序会永远运行下去,必须按Ctrl+C退出程序

原文地址:https://www.cnblogs.com/yun1233/p/10385476.html

时间: 2024-11-05 18:48:20

Python的TCP编程的相关文章

python之TCP编程

客户端编程 #-*- coding:utf8 -*- import socket #创建一个socket #AF_INET指定使用IPv4协议,如果要用更先进的IPv6,就指定为AF_INET6.SOCK_STREAM指定使用面向流的TCP协议 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #建立连接 s.connect(('www.sina.com.cn', 80)) #发送数据(http请求) s.send('GET / HTTP

通过python实现TCP编程

伪代码:ss = socket() #创建服务器套接字ss.bind() #把地址绑定到套接字上ss.listen() #监听连接(最大连接数)info_loop: #服务器无限循环 cs = ss.accept() #接受客户端连接comm_loop: #通信循环 cs.recv()/cs.send() #对话(接收/发送) cs.close() #关闭客户端套接字ss.close() #关闭服务器 所有的套接字都用socket.socket()函数来创建,服务器需要"坐在某个端口上"

python中的TCP编程学习

今天看了一下关于python的TCP编程. 发现思路和其他语言(比如java)思路基本上差点儿相同. 先看client.基本过程例如以下: 第一步:创建一个socket 第二步:建立连接 第三步:发送数据 第四步:读取从server发送过来的数据 第五步:关闭连接 第六步:对收到的数据进行处理 以下为python的TCP编程的client程序的一个小样例.java中关于网络编程的博文请看这里 #coding:utf-8 #TCP编程的client程序 #编写client程序与其他语言(比如jav

python网络编程之TCP编程

TCP编程 模拟客户端和服务器端进行通信.其中要素为ip地址和端口. 客户端: 建立socket对象,并且设置为TCP模式 用connect()方法设置端口和ip地址,需要传入一个set. 可以进行接受和发送的操作 关闭socket连接 服务器端: 因为一个服务器打开一个固定端口进行监听,但是可能响应不同的客户端,所以可以定义不同的进程序进行处理. 建立socket对象 绑定IP地址和端口 监听 利用进程响应不同的客户端请求,可以发送和接受数据等操作 关闭socket连接 实例: 客户端: im

Python:TCP编程基础

# TCP编程# - 创建socket# - 连接服务器# -发送数据# - 接受数据# - 关闭socket# import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(('www.baidu.com',80)) s.send(b'GET/HTTP/1.1/r\nHost:www.baidu.com\r\nCpnnection:close\r\n\r\n')buf = [] while True: d

python 入门 - 函数式编程

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000     函数 定义函数 def my_abs(x): if x >= 0: return x else: return -x result =my_

Python 3 socket编程

Python 3 socket编程 一 客户端/服务器架构 互联网中处处是C/S架构 1.C/S结构,即Client/Server(客户端/服务器)结构 2.在互联网中处处可见c/s架构 比如说浏览器,在线视频,各种社交软件. C/S架构与socket的关系: 我们学习socket就是为了c/s架构的开发 学习socket一定要先学习互联网协议: 1.如何基于socket编程,来开发一款自己的C/S架构软件 2..C/S架构的软件(软件属于应用层)是基于网络进行通信的 3.网络的核心即一堆协议,

Python基础-socket编程

一.网络编程 自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了. 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的通信. 举个例子,当你使用浏览器访问新浪网时,你的计算机就和新浪的某台服务器通过互联网连接起来了,然后,新浪的服务器把网页内容作为数据通过互联网传输到你的电脑上. 由于你的电脑上可能不止浏览器,还有QQ.Skype.Dropbox.邮件客户端等,不同的程序连接的别的计算机也会不同,所以,更确切地说,

PYTHON黑帽编程 4.1 SNIFFER(嗅探器)之数据捕获--补充

荒废了一个多月了,重新捡起来,手生了不少.发现在<4.1下>的文章里没有 提到pcap库,实在是不应该. 在网络数据分析的工具中,tcpdump绝对是大名鼎鼎,tcpdump底层是libpcap库,由C语言编写. Pcapy模块则是基于libpcap的Python接口.pcapy在github上的项目地址为: https://github.com/CoreSecurity/pcapy. 下面我们来看看如何使用pcapy实现数据包的捕获. #!/usr/bin/python import pca