一,基础版服务器端客户端(一收一发,只有一个客户端链接)

服务器端:

 #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的套接字编程的更多相关文章

  1. UDP,TCP的套接字编程的Python实现

    UDP,TCP的套接字编程的Python实现 套接字:连接应用层和运输层,应用层的网络应用程序使用IP地址+端口号来标识自己,然后通过套接字调用运输层为其服务,网络应用程序只能指定自己要使用的网络类型 ...

  2. 基于udp的套接字编程

    一,简单明了了解udp套接字编程 客户端: #Author : Kelvin #Date : 2019/1/30 11:07 from socket import * ip_conf=("1 ...

  3. Day9 基于TCP的套接字和基于UDP的套接字

    服务端: ss=socket() #创建服务器套接字 ss.bind() #把地址绑定到套接字 ss.listen() #监听套接字, inf_loop: #服务器无限循环 cs=ss.accept( ...

  4. python TCP socket套接字编程以及注意事项

    TCPServer.py #coding:utf-8 import socket #s 等待链接 #c 实时通讯 s = socket.socket(socket.AF_INET,socket.SOC ...

  5. 基于TCP的套接字

    tcp服务端 1 ss = socket() #创建服务器套接字 2 ss.bind() #把地址绑定到套接字 3 ss.listen() #监听链接 4 inf_loop: #服务器无限循环 5 c ...

  6. 基本套接字编程(1) -- tcp篇

    1. Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换. 几个定义: (1)IP地址:即依照TCP/IP协议分配给本地主机 ...

  7. 网络编程之基于UDP协议的套接字编程、基于socketserver实现并发的socket

    目录 基于UDP协议的套接字编程 UDP套接字简单示例 服务端 客户端 基于socketserver实现并发的socket 基于TCP协议 server类 request类 继承关系 服务端 客户端1 ...

  8. 基于socketserver实现并发的socket套接字编程

    一.基于TCP协议 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环 socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) 1.1 ...

  9. 套接字编程(VC_Win32)

    简介(源于维基) Berkeley套接字(也作BSD套接字应用程序接口)刚开始是4.2BSD Unix操作系统(于1983发布)的一套应用程序接口.然而,由于AT&T的专利保护着UNIX,所以 ...

随机推荐

  1. Redis模块化基本介绍

    概要 Redis Modules System基本概念 基本应用 参考资料 1. Redis Modules System基本概念 Redis Modules System是4.0出现一大改动点,使得 ...

  2. Docker 跨主机网络方案分析

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  3. Map Reduce和流处理

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由@从流域到海域翻译,发表于腾讯云+社区 map()和reduce()是在集群式设备上用来做大规模数据处理的方法,用户定义一个特定的映射 ...

  4. Git分支合并冲突解决(续)

    接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时, ...

  5. 如何通俗的理解spring的控制反转、依赖注入、面向切面编程等等

    之前一直不理解spring的一些基础特性是什么意思,虽然网上的解释也很多,但是由于我比较笨,就是看不懂,知道最近才稍微了解,下面就以通俗讲解的方式记录下来. 前言 假设我是一个没有开店经验的小老板,准 ...

  6. Mybatis中的逆向工程

    1. 准备工作 数据库驱动jar包, mybatis的jar包, 日志记录jar包 2. 配置文件 1. 在src的同级目录下配置generatorConfig.xml文件 <?xml vers ...

  7. Shiro入门之一 -------- Shiro权限认证与授权

    一  将Shirojar包导入web项目 二 在web.xml中配置shiro代理过滤器 注意: 该过滤器需要配置在struts2过滤器之前 <!-- 配置Shiro的代理过滤器 -->  ...

  8. Android的JDK、SDK、Eclipse的理解

    今天看了这方面的内容,感觉学到了一些东西: 首先,jdk是用来处理Java语言的, sdk是用来处理Java语言和硬件之间的关联的, eclipse是用来编写Java语言的, 通过对这方面的理解,加深 ...

  9. jQuery 素材 缩略图轮播集合

    http://www.17sucai.com/pins/demo-show?id=27124 http://www.17sucai.com/pins/demo-show?id=4712  楼盘详情缩略 ...

  10. 基于微服务API级权限的技术架构

    一般而言,企业内部一套成熟的权限系统,都是基于角色(Role)的 访问控制方法(RBAC – Role Based Access Control),即权限 (Permission)与角色相关联,用户( ...