1. tcp套接字编程

用下面的一张图可以清楚表示:

下面的python实现也很清晰:
server:

def tcplink(sock, addr):print 'Accept new connection from %s:%s...' % addrsock.send('Welcome!')while True:data = sock.recv(1024)time.sleep(1)if data == 'exit' or not data:breaksock.send('Hello, %s!' % data)sock.close()print 'Connection from %s:%s closed.' % addrif __name__ == '__main__': s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(('127.0.0.1', 9999))s.listen(5)print 'Waiting for connection...'while True:# 接受一个新连接:sock, addr = s.accept()# 创建新线程来处理TCP连接:t = threading.Thread(target=tcplink, args=(sock, addr))t.start()

client:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接:
s.connect(('127.0.0.1', 9999))
# 接收欢迎消息:
print s.recv(1024)
for data in ['Michael', 'Tracy', 'Sarah']:# 发送数据:s.send(data)print s.recv(1024)
s.send('exit')
s.close() 

2. 双向通道

注意,TCP连接创建的是双向通道,双方都可以同时给对方发数据。但是谁先发谁后发,怎么协调,要根据具体的协议来决定。
比如,我们可以基于tcp实现推送:客户端和服务端建立一个套接字,client只是以阻塞的方式read(),直到server有信息。

server:

def tcplink(sock, addr):print 'Accept new connection from %s:%s...' % addrsock.send('Welcome!')while True:time.sleep(1)sock.send('Hello!')sock.close()print 'Connection from %s:%s closed.' % addrif __name__ == '__main__': s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(('127.0.0.1', 9999))s.listen(5)print 'Waiting for connection...'while True:# 接受一个新连接:sock, addr = s.accept()# 创建新线程来处理TCP连接:t = threading.Thread(target=tcplink, args=(sock, addr))t.start()

client

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 9999))
while True:print s.recv(1024)
s.close()

tcp套接字编程模型相关推荐

  1. 套接字编程---2(TCP套接字编程的流程,TCP套接字编程中的接口函数,TCP套接字的实现,TCP套接字出现的问题,TCP套接字多进程版本,TCP套接字多线程版本)

    TCP模型创建流程图 TCP套接字编程中的接口 socket 函数 #include <sys/types.h> /* See NOTES */ #include <sys/sock ...

  2. 《计算机网络:自顶向下方法(原书第6版)》一2.7 TCP套接字编程

    本节书摘来华章计算机<计算机网络:自顶向下方法(原书第6版)>一书中的第2章 ,第2.7节,(美)James F.Kurose Keith W.Ross 著 陈 鸣 译 更多章节内容可以访 ...

  3. 《网络编程》基本 TCP 套接字编程

    在进行套接字编程之前必须熟悉其地址结构,有关套接字的地址结构可参考文章<套接字编程简介>.基于 TCP 的套接字编程的所有客户端和服务器端都是从调用socket 开始,它返回一个套接字描述 ...

  4. 计算机网络实验4 - TCP套接字编程 - 点对点聊天 - 代码实现

    客户端 package chat;import java.io.IOException; import java.io.PrintStream; import java.net.Socket; imp ...

  5. 《UNIX网络编程 卷1:套接字联网API》学习笔记——基本TCP套接字编程

    UNIX网络编程--基本TCP套接字编程 socket 函数 connect 函数 bind 函数 listen 函数 accept 函数 fork 和 exec 函数 并发服务器 close 函数 ...

  6. UNIX环境编程(c语言)--套接字--基本TCP套接字编程

    目录 准备知识 字节序 字节序转换函数 字节操纵函数 地址转换函数 地址结构 基本TCP套接字编程 概要 socket函数 bind函数 listen函数 accept函数 connect函数 通信函 ...

  7. Experiment 0x1:TCP套接字编程

    Experiment 0x1:TCP套接字编程 文章目录 Experiment 0x1:TCP套接字编程 0x0 说明 0x1 要求 0x2 实现 0x3 源码 1- TCP服务端源码 2- TCP客 ...

  8. TCP套接字编程(C语言)

    本篇主要内容介绍: 介绍TCP套接字基本概念 介绍TCP套接字编程流程 基本TCP套接字函数介绍 1.TCP套接字基本概念(非官方解释,个人总结) 套接字是一种网络API,提供一种进程间的通信方法,使 ...

  9. TCP套接字编程实例(一)

    TCP套接字编程实例(一) TCP套接字编程第一部分我们先用单线程简单实现客户端的"发"和服务器的"收".话不多说,直接上代码. 1.Client部分: #in ...

最新文章

  1. JSP/Servlet Web 学习笔记 DayFour —— 实现一个简单的JSP/Servlet交互
  2. android 横向滑动事件,android左右手势滑动事件处理
  3. opencv颜色识别java,Opencv颜色识别与追踪
  4. centos yum安装时出现 cannot find a valid baseurl for repo: addons
  5. 合肥工业大学宣城校区大学生创新创业训练项目申报书:“基于Spark平台的人工智能知识的知识图谱构建”...
  6. C# 版本设计模式(Design Pattern)---------------总序
  7. Java:集合for高级循环遍历
  8. linux磁盘冗余阵列
  9. 2017西安交大ACM小学期数据结构 [又是树状数组、异或]
  10. matlab 刻度非均匀控制,MATLAB 出一张好看的图
  11. 虹软2.0 离线人脸识别 Android 开发 Demo
  12. 11-----的使用
  13. 大数据笔记--Hadoop(第五篇)
  14. 在线富文本编辑器-基于Web的HTML编辑器大全(二)
  15. c#实现四舍五入(Round)/向上舍入(RoundUp)/向下舍入(RoundDown)
  16. 无线网络打印机服务器安装步骤,在win7安装带网络服务器的打印机步骤.ppt
  17. 为什么SDWAN成为了组网发展大趋势呢?
  18. Spring Integration
  19. DOO-SABIN 细分正方体(1)利用邻接矩阵表示
  20. 重装win10操作系统(制作系统U盘方法)

热门文章

  1. 链接oracle 灾难性故障,打开计划任务的时候出现灾难性故障.
  2. 使用过这么多年Hibernate,对底层原理你知多少?
  3. 计算机应用与技术大赛,关于举办2017年燕山大学第一届计算机应用技术与程序设计大赛的通知...
  4. python英文词频统计去除定冠词_使用Python进行英文词频统计
  5. 金古桥机器人_泽塔奥特曼上演“吃瘪预定”,金古桥强势回顾,阿尔法被骑着打脸...
  6. javascript:void(0)
  7. python小数点进位小学数学_python小数的进位与舍去的介绍(附代码)
  8. java 算法 福尔摩斯的约会
  9. Java 算法 S01串
  10. ubuntu 18.04安装与配置 Redis