基于tcp的套接字编程
一,基础版服务器端客户端(一收一发,只有一个客户端链接)
服务器端:
#Author : Kelvin
#Date : 2019/1/28 22:10
from socket import *
server=socket.socket(AF_INET,SOCK_STREAM)
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #解决服务器重启时地址被占用的问题
server.bind(("127.0.0.1",8888))
server.listen(5)
print("服务器已经启动...")
conn,addr=server.accept()
res=conn.recv(1024).decode("utf8")
print("服务器:",res)
conn.send("服务器收到请求!".encode())
conn.close()
server.close()
客户端:
#Author : Kelvin
#Date : 2019/1/28 22:10
import socket
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("127.0.0.1",8888))
client.send("客户端请求连接!".encode())
res=client.recv(1024).decode("utf8")
print("客户端:",res)
client.close()
二,可交流版服务器端客户端(多收多发,只有一个客户端链接)
服务器端:
#Author : Kelvin
#Date : 2019/1/28 22:10
from socket import *
server=socket.socket(AF_INET,SOCK_STREAM)
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #解决服务器重启时地址被占用的问题
server.bind(("127.0.0.1",8888))
server.listen(5)
print("服务器已经启动...")
conn,addr=server.accept()
while True:
res=conn.recv(1024).decode("utf8")
print("\033[1;36;0m服务器接收:\033[0m%s"%res)
con=input("回复:")
conn.send(con.encode())
conn.close()
server.close()
客户端:
#Author : Kelvin
#Date : 2019/1/28 22:10
from socket import *
client=socket.socket(AF_INET,SOCK_STREAM)
client.connect(("127.0.0.1",8888))
while True:
con=input("回复:")
client.send(con.encode())
print("\033[1;36;0m客户端:\033[0m%s" %con)
res=client.recv(1024).decode("utf8")
print("\033[1;36;0m服务器端:\033[0m%s"%res)
client.close()
三,多链接版服务器端客户端(多收多发,多个客户端链接)
服务器端:
#Author : Kelvin
#Date : 2019/1/28 22:10
from socket import *
server=socket.socket(AF_INET,SOCK_STREAM)
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #解决服务器重启时地址被占用的问题
server.bind(("127.0.0.1",8888))
server.listen(5)
while True:
print("服务器已经启动...")
conn,addr=server.accept()
while True:
try:
res=conn.recv(1024).decode("utf8")
print("\033[1;36;0m服务器接收:\033[0m%s"%res)
con=input("回复:")
conn.send(con.encode())
except Exception:
break
conn.close()
server.close()
客户端1:
#Author : Kelvin
#Date : 2019/1/28 22:10
import socket
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("127.0.0.1",8888))
while True:
con=input("回复:")
client.send(con.encode())
print("\033[1;36;0m客户端1:\033[0m%s" %con)
res=client.recv(1024).decode("utf8")
print("\033[1;36;0m服务器端:\033[0m%s"%res)
client.close()
客户端2:
#Author : Kelvin
#Date : 2019/1/28 22:10
import socket
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("127.0.0.1",8888))
while True:
con=input("回复:")
client.send(con.encode())
print("\033[1;36;0m客户端2:\033[0m%s" %con)
res=client.recv(1024).decode("utf8")
print("\033[1;36;0m服务器端:\033[0m%s"%res)
client.close()
基于tcp的套接字编程的更多相关文章
- UDP,TCP的套接字编程的Python实现
UDP,TCP的套接字编程的Python实现 套接字:连接应用层和运输层,应用层的网络应用程序使用IP地址+端口号来标识自己,然后通过套接字调用运输层为其服务,网络应用程序只能指定自己要使用的网络类型 ...
- 基于udp的套接字编程
一,简单明了了解udp套接字编程 客户端: #Author : Kelvin #Date : 2019/1/30 11:07 from socket import * ip_conf=("1 ...
- Day9 基于TCP的套接字和基于UDP的套接字
服务端: ss=socket() #创建服务器套接字 ss.bind() #把地址绑定到套接字 ss.listen() #监听套接字, inf_loop: #服务器无限循环 cs=ss.accept( ...
- python TCP socket套接字编程以及注意事项
TCPServer.py #coding:utf-8 import socket #s 等待链接 #c 实时通讯 s = socket.socket(socket.AF_INET,socket.SOC ...
- 基于TCP的套接字
tcp服务端 1 ss = socket() #创建服务器套接字 2 ss.bind() #把地址绑定到套接字 3 ss.listen() #监听链接 4 inf_loop: #服务器无限循环 5 c ...
- 基本套接字编程(1) -- tcp篇
1. Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换. 几个定义: (1)IP地址:即依照TCP/IP协议分配给本地主机 ...
- 网络编程之基于UDP协议的套接字编程、基于socketserver实现并发的socket
目录 基于UDP协议的套接字编程 UDP套接字简单示例 服务端 客户端 基于socketserver实现并发的socket 基于TCP协议 server类 request类 继承关系 服务端 客户端1 ...
- 基于socketserver实现并发的socket套接字编程
一.基于TCP协议 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环 socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) 1.1 ...
- 套接字编程(VC_Win32)
简介(源于维基) Berkeley套接字(也作BSD套接字应用程序接口)刚开始是4.2BSD Unix操作系统(于1983发布)的一套应用程序接口.然而,由于AT&T的专利保护着UNIX,所以 ...
随机推荐
- Effective C++ 读书笔记(46-50)
条款四十六:需要类型转换时请为模板定义非成员函数 条款四十七:请使用traits classes 表现类型信息 1.整合重载技术后,traits classes 有可能在编译期对类型执行if...el ...
- python字符串基本编码
综述:python中字符串分为字节字符和非字节字符python3中默认输入字符串以非字节字符编码,使用unicode字符集表示,可以使用encode方法转化为ascii,utf-8, utf-16等各 ...
- Jenkins通过Publish over SSH插件实现远程部署
Jenkins通过Publish over SSH插件实现远程部署 步凑一.配置ssh免秘钥登录 部署详情地址:http://www.cnblogs.com/Dev0ps/p/8259099.html ...
- Java 面试知识点解析(三)——JVM篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- 设计模式之策略模式(Strategy Pattern)
模板方法是通过继承实现的,在父类中定义出算法的骨架,将不同点在子类中实现.而策略模式是通过接口实现的,策略中定义了完整的算法.它们有点像啊-- 策略模式的定义 策略模式(Strategy Patter ...
- VMware Workstation 的安装和使用
https://blog.csdn.net/lamp_yang_3533/article/details/53136474 VMware Workstation 是一个虚拟PC的软件,利用VMwa ...
- MySQL事务原理&实战【官方精译】
事务隔离级别 事务隔离是数据库处理的基础之一.隔离是I中的首字母 ACID ; 隔离级别是在多个事务同时进行更改和执行查询时,对结果的性能和可靠性,一致性和可重复性之间的平衡进行微调的设置. Inno ...
- composer安装以及更新问题,配置中国镜像源。
配置国内镜像源 中国镜像源 https://pkg.phpcomposer.com/ composer 中文官网地址 http://www.phpcomposer.com/ 下载 Composer 安 ...
- 火狐浏览器插件--xpath利器
以前在做web自动化的时候,免不了要找定位啊什么的.一层层找下来太痛苦了,时间也浪费了一天写不了啥.特别是在最开始接触自动化的时候,我们系统坑爹的只支持IE.后来换公司了,在偶然情况下,得知了fire ...
- 干货 | Java中获取类名的3种方法!
获取类名的方法 Java 中获取类名的方式主要有以下三种. getName() 返回的是虚拟机里面的class的类名表现形式. getCanonicalName() 返回的是更容易理解的类名表示. g ...