基于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,所以 ...
随机推荐
- stm8开发环境
网上大致有两种环境: 1.stvp+stvd 也就是st自家的sttoolsetpack包 stvd的界面有点古板,有点像vc++6.0,具体使用感觉怎样我也不知道,我没有使用这个环境. stvp这个 ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第三周
一.逻辑回归问题(分类问题) 生活中存在着许多分类问题,如判断邮件是否为垃圾邮件:判断肿瘤是恶性还是良性等.机器学习中逻辑回归便是解决分类问题的一种方法.二分类:通常表示为yϵ{0,1},0:&quo ...
- PyQuery详解
1.What is Pyquery? 答:灵活强大的网页解析库 2.安装: pip3 install pyquery 3.基本使用 初始化操作: 前言:在介绍之前小伙伴们我们先来了解下CSS的基本语法 ...
- c# 多线程编程中AutoResetEvent和ManualResetEvent
作为等同于Java的wait,notify,notifyAll的存在,AutoResetEvent和ManualResetEvent分别实现了notify和notifyAll的功能,下面的代码简单讲解 ...
- CSS 外边距合并。
<div id = "parent"> <div id = "child"> demo </div> </div> ...
- Django+xadmin打造在线教育平台(五)
目录 在线教育平台(一) 在线教育平台(二) 在线教育平台(三) 在线教育平台(四) 在线教育平台(五) 在线教育平台(六) 在线教育平台(七) 在线教育平台( ...
- IDEA修改编辑背景图片
1.打开File -> Setting -> Plugs -> 搜索BackgroundImage. 然后安装.如图 2.按快捷键ctrl+shift+A,搜索set backgro ...
- javase---string类介绍01
一.String类简介 java.lang.String类用于描述一个字符序列.String类是不可变对象的类.其对象一旦被创建,永远无法改变.但是对象的引用可以重新赋值.而且String类被fina ...
- msql索引
从网上找了两种解决方案: 最近要给一个表加一个联合唯一索引,但是表中的两个联合健有重复值,导致无法创建: 解决方案一:ignore(会删除重复的记录(重复记录只保留一条,其他的删除),然后建立唯一索引 ...
- vue的生命周期钩子
生命周期过程: new vue() :vue实例进行初始化,读取所有生命周期函数,并没有执行(不会调用) beforeCreate():创建前,读取属性,计算属性,添加set/get,读取watch ...