Python网络编程_TCP(简略版)

TCP监听套接字:

  当新的客户端请求连接时,服务器端监听套接字收到消息,会分配一个新的套接字对应于客户端,用于接收客户端的消息,

但是当服务器端要回传消息时,使用的仍是监听套接字

 1 #tcp客户端
 2 import socket
 3
 4 def cilent():
 5     #1.创建TCP套接字
 6     # socket.AF_INET:IPV4  socket.SOCK_STREAM:TCP
 7     socket_tcp_cilent=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 8
 9     #客户端一般不绑定(bind)ip和port
10     #2.连接服务器
11     server_ip=‘192.168.1.103‘
12     server_port=5566
13     server_addr=(server_ip,server_port)
14     socket_tcp_cilent.connect(server_addr)
15
16     while True:
17         #3.发送数据/接收数据
18         send_data=input("请输入要发送的数据: ")
19         if send_data==‘exit‘:
20             print("客户端关闭!")
21             break
22         socket_tcp_cilent.send(send_data.encode(‘utf-8‘))
23         recv_data,recv_ip_port=socket_tcp_cilent.recvfrom(1024)
24         print("服务器端回送的消息%s"%(recv_data.decode(‘gbk‘)))
25
26     #4.关闭TCP连接
27     socket_tcp_cilent.close()
28
29
30 if __name__==‘__main__‘:
31     cilent()
 1 #TCP服务器端
 2 import socket
 3
 4 def server():
 5     num=1
 6     #1.创建套接字
 7     socket_tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
 8
 9     #2.绑定本地信息 bind(ip,port)
10     server_ip=‘‘
11     server_port=5566
12     server_addr=(server_ip,server_port)
13     socket_tcp_server.bind(server_addr)
14
15     #3.让默认的套接字由主动变为被动 listen
16     socket_tcp_server.listen(128)
17     #监听套接字:负责等待新的各个客户端进行连接
18
19     #4.等待客户端的连接 accept
20     # 程序执行的到这里默认阻塞,当客户端连接服务端时,解阻塞
21     # accept 返回一个二元元组,第一个是新的套接字,第二个是客户端
22     # accept 负责产生新的套接字为客户端服务
23     while True:
24         print(‘等待一个新的客户端的到来...‘)
25         new_cilent_socket,cilent_addr=socket_tcp_server.accept()
26         print(‘一个新的客户端已经到来%s‘%str(cilent_addr))
27         while True: #循坏多次,为同一个客户端服务多次
28              #使用新分配的套接字,接收客户端发送过来的请求
29              #如果recv阻塞,两种方式解阻塞:
30              #1.客户端发送过来数据
31              #2.客户端调用close导致
32              try:
33                  recv_data=new_cilent_socket.recv(1024) #接收到普通数据
34              except:
35                  break
36              #print(new_cilent_socket)
37              print(‘客户端发送过来的请求是:%s‘%recv_data.decode(‘utf-8‘))
38              #如果客户机不需要服务了,当客户端socket.close()执行时,服务器套接字的消息会为空(recv解阻塞)
39              #回送部分数据给客户端
40              new_cilent_socket.send(‘-------ok-------‘.encode(‘utf-8‘))
41         #关闭套接字
42         new_cilent_socket.close()
43         print(‘%d号客户机已经服务完毕!‘%num)
44         num+=1
45     #关闭套接字
46     socket_tcp_server.close()
47
48 if __name__==‘__main__‘:
49     server()

原文地址:https://www.cnblogs.com/NiBosS/p/11933145.html

时间: 2024-10-20 19:01:57

Python网络编程_TCP(简略版)的相关文章

Python网络编程03/ low版解决粘包问题

目录 Python网络编程03/ low版解决粘包问题 1.操作系统的缓存区 2.基于TCP协议的socket循环通信 2.1 服务端(server) 2.2客户端(client) 3.基于TCP协议的socket链接+循环 通信 3.1服务端(server) 3.2 客户端(client) 4.基于TCP协议的socket应用实例:执行远程命令 4.1服务端(server) 4.2客户端(client) 5.粘包现象 5.1服务端(server) 5.2客户端(client) 5.3展示收发问

python 网络编程第三版

为服务端增加多线程解决方案 1.服务端代码如下: ***这个版本并没有真正的起到多线程的作用,主要原因在于t.join():以后的版本会改进这个问题*** #!/usr/bin/python #!coding:utf-8 import os,sys,time from socket import * import threading def handleClient(conn): print '[info] handleClient is :{0}'.format(os.getpid()) wh

Python网络编程04/recv原理/高大上版解决粘包方式

目录 Python网络编程04/recv原理/高大上版解决粘包方式 1.昨日内容回顾 2.recv工作原理 3.高大上版解决粘包方式(自定制报头) 3.1 解决思路: 3.2 服务端 3.3客户端 4.基于UDP协议的socket通信 4.1服务端 4.2客户端 Python网络编程04/recv原理/高大上版解决粘包方式 1.昨日内容回顾 1. 通信循环 2. 链接通信循环 3. 远程执行命令: subprocess.Popen() # bytes: 网络传输, 文件存储时. 4. 粘包现象

PYTHON网络编程基础 pdf扫描版高清下载

PYTHON网络编程基础 pdf,本书全面介绍了使用PYTHON进行网络编程的基础知识,高级网络操作.WebServices.解析HTML和XHTML.XML.FTP.使用PYTHON操作数据库.SSL.几种服务器端框架,以及多任务处理等,实用性比较强,书中提供了175个实例,6600行以上的代码. 目录 第1部分 底层网络 第1章 客户/服务器网络介绍 第2章 网络客户端 第3章 网络服务器 第4章 域名系统 第5章 域名系统 第2部分 Web Service 第6章 Web客户端访问 第7章

[python] 网络编程之套接字Socket、TCP和UDP通信实例

很早以前研究过C#和C++的网络通信,参考我的文章: C#网络编程之Tcp实现客户端和服务器聊天 C#网络编程之套接字编程基础知识 C#网络编程之使用Socket类Send.Receive方法的同步通讯 Python网络编程也类似.同时最近找工作笔试面试考察Socket套接字.TCP\UDP区别比较多,所以这篇文章主要精简了<Python核心编程(第二版)>第16章内容.内容包括:服务器和客户端架构.套接字Socket.TCP\UDP通信实例和常见笔试考题. 最后希望文章对你有所帮助,如果有不

Python网络编程(一)

最近在啃<python核心编程(第三版)>,感觉这本书并不是特别的友好,虽然有基于python3提出的改进代码:但是整书的基准感觉还是在python2.7.所以python3的代码中还是有较多的错误:就比如第二章网络编程中: 原代码: 创建TCP服务器 #coding=utf-8 from socket import * from time import ctime HOST='' PORT=21567 BUFSIZ=1024 ADDR=(HOST,PORT) tcpSerSock=socke

Python核心编程 第3版 中文版pdf

[下载地址] <Python核心编程(第3版)>是经典畅销图书<Python核心编程(第二版)>的全新升级版本,总共分为3部分.第1部分为讲解了Python的一些通用应用,包括正则表达式.网络编程.Internet客户端编程.多线程编程.GUI编程.数据库编程.Microsoft Office编程.扩展Python等内容.第2部分讲解了与Web开发相关的主题,包括Web客户端和服务器.CGI和WSGI相关的Web编程.Django Web框架.云计算.高级Web服务.第3部分则为一

分享《Python核心编程(第3版)》《Python编程入门(第3版)》高清中英文版PDF+源代码

<Python核心编程(第3版)>经典<Python核心编程(第二版)>的全新升级版本,总共分为3部分.第1部分为讲解了Python的一些通用应用,包括正则表达式.网络编程.Internet客户端编程.多线程编程.GUI编程.数据库编程.Microsoft Office编程.扩展Python等内容.第2部分讲解了与Web开发相关的主题,包括Web客户端和服务器.CGI和WSGI相关的Web编程.Django Web框架.云计算.高级Web服务.第3部分则为一个补充/实验章节,包括文

python 网络编程 (二)---tcp

异常 python的socket模块实际上定义了4种可能出现的异常: 1)与一般I/O 和通信问题有关的socket.error; 2)与查询地址信息有关的socket.gaierror; 3)与其他地址错误有关的socket.herror; 4)与在一个socket上调用settimeout()后,处理超时有关的socket.timeout; import socket, sys, time host = sys.argv[1] textport = sys.argv[2] filename