基于TCP协议的套接字编程(简单)

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 9999)
)
server.listen(5) conn, addr = server.accept()
print(addr) data = conn.recv(1024).decode('utf-8')
print(data) conn.send('来自服务端消息:我不好'.encode('utf-8'))
conn.close() server.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 9999)
) client.send('来自客户端消息:你好'.encode('utf-8')) data = client.recv(1024).decode('utf-8')
print(data) client.close()

基于TCP协议的套接字编程(复杂)

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 9999)
)
server.listen(5) conn, addr = server.accept()
print(addr) while True:
# 接收客户端发送来的消息
data = conn.recv(1024).decode('utf-8')
print(data)
if data == 'q':
break
send_msg = input('server--->client: ').encode('utf-8')
conn.send(send_msg) conn.close()
server.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 9999)
) while True:
send_msg = input('client---> server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break # 服务端返回的数据
data = client.recv(1024).decode('utf-8')
print(data) client.close()

服务端服务多个客户

服务端

import socket

server = socket.socket()
server.bind(
('127.0.0.1', 8888)
)
server.listen(5) # 半连接数,等待的用户 while True:
conn, addr = server.accept()
print(addr) while True:
try:
data = conn.recv(1024).decode('utf-8')
print(data) # mac\linux的bug:b''
if len(data) == 0:
continue if data == 'q':
break
send_msg = input('server--->client:').encode('utf-8')
conn.send(send_msg)
except Exception as e:
print(e)
break conn.close()

客户端

import socket

client = socket.socket()
client.connect(
('127.0.0.1', 8888)
) while True:
send_msg = input('client--->server:')
client.send(send_msg.encode('utf-8'))
if send_msg == 'q':
break data = client.recv(1024).decode('utf-8')
print(data) client.close()

基于TCP连接的socket套接字编程的更多相关文章

  1. 基于TCP协议的socket套接字编程

    目录 一.什么是Scoket 二.套接字发展史及分类 2.1 基于文件类型的套接字家族 2.2 基于网络类型的套接字家族 三.套接字工作流程 3.1 服务端套接字函数 3.2 客户端套接字函数 3.3 ...

  2. 基于UDP协议的socket套接字编程

    目录 一.UDP套接字简单示例 1.1 服务端 二.客户端 三.UPD套接字无粘包问题 3.1 服务端 3.2 客户端 四.qq聊天 4.1 服务端 4.2 客户端1 4.3 客户端2 4.4 运行结 ...

  3. Linux之socket套接字编程20160704

    介绍套接字之前,我们先看一下传输层的协议TCP与UDP: TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UD ...

  4. linux网络环境下socket套接字编程(UDP文件传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  5. linux网络编程-(socket套接字编程UDP传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  6. socket套接字编程 HTTP协议

    socket套接字编程  套接字介绍  1. 套接字 : 实现网络编程进行数据传输的一种技术手段  2. Python实现套接字编程:import  socket  3. 套接字分类 >流式套接 ...

  7. socket 套接字编程

    今日内容 socket 套接字编程 简易服务端与客户端代码实现 通信循环 黏包现象(TCP协议) 报头制作.struct 模块.封装形式 内容详细 一.socket 套接字编程 实现一款能够进行数据交 ...

  8. Learning-Python【28】:基于TCP协议通信的套接字

    什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Sock ...

  9. Python 31 TCP协议 、socket套接字

    1.TCP协议 可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割. (1)三次握手建链接( ...

随机推荐

  1. 如何开发优质的 Flutter App:Flutter App 软件调试指南

    本次博主带来的是<深入 Flutter 系列课程>第三讲,主要聊聊如何进行 Flutter App 代码的调试.本次课程将在GitChat平台上免费进行,通过本场 Chat,您将获得以下技 ...

  2. from __future__ import absolute_import,division,print_function的作用

    绪论: 最近看多的项目中都文件的开头都带引入了三个模块,特地去查了下其作用(注:验证需要在python2的环境下) absolute_import :绝对导入,其作用是导入模块的时候如果在当前项目目录 ...

  3. Data Management Technology(5) -- Recovery

    Recovery Types of Failures Wrong data entry Prevent by having constraints in the database Fix with d ...

  4. C++ class内类型重载,operator Type()

    #include <iostream> // operator Type() 类型操作符重载 // operator int() // operator double() // ... / ...

  5. 原型链 | 显示原型、隐式原型 | 构造关系constructor | instanceof

    1.原型关系 prototype 显式原型:prototype 隐式原型:__proto__ 1. 每个函数function都有一个prototype,即显式原型(属性)2. 每个实例对象都有一个__ ...

  6. rabbit mq 手动重试机制

    消息手动确认模式的几点说明 监听的方法内部必须使用channel进行消息确认,包括消费成功或消费失败 如果不手动确认,也不抛出异常,消息不会自动重新推送(包括其他消费者),因为对于rabbitmq来说 ...

  7. SQL Server 移位运算符

    参考链接:http://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/ SQL Server 官网的连接:h ...

  8. java启动参数

    java命令启动应用所使用的参数,基本是用于JVM的,某种程度上也叫做JVM参数.总的来说,java启动参数共分为三大类,分别是: 标准参数(-):相对稳定的参数,每个版本的JVM都可用. 非标准X参 ...

  9. 【洛谷5072】[Ynoi2015] 盼君勿忘(莫队)

    点此看题面 大致题意: 一个序列,每次询问一个区间\([l,r]\)并给出一个模数\(p\),求模\(p\)意义下区间\([l,r]\)内所有子序列去重后值的和. 题意转化 原来的题意看起来似乎很棘手 ...

  10. 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 10

    23.5.4  客户端访问API 按RESTful规范开发API,又有详细的帮助文档,客户端的应用就相对容易一些.下面,以PHP作为访问接口的客户端,演示API的应用.在PHP中请求接口需要使用CUR ...