TCP/IP 是标准的协议,它可以使用世界范围内的计算机通过Internet或本地的网络通信

1.编写一个TCP客户端程序

 #!/usr/bin/env python

 import socket, sys

 port = 70
host = sys.argv[1]
filename = sys.argv[2] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port)) s.sendall(filename+ "\r\n") while 1:
buf = s.recv(2048)
if not len(buf):
break;
sys.stdout.write(buf)

  这段代码实现的是Gopher协议,一种Web出现之前在Internet上非常流行的协议。这个程序需要两个命令行参数:主机名和文件名,实现从主机上请求相关文档的功能。

  操作很简单,通过调用socket.socket()来建立一个socket,里面的参数告诉系统需要一个Internet socket来进行TCP通信,接着程序连接远程主机并提供文件名。最后获得响应,并把内容打印出来。

  运行以下命令:python f:\python\gopherclient.py quux.org /,您将得到Gopher服务器根目录文件列表

2.编写一个服务器端程序

 #!/usr/bin/env python
#coding:utf-8 import socket host= '' #主机名设置成空字符串,代表这个服务器可以接受来自任意地方的连接
port = 51423 s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #把socket设置成可复用的(可选)
s.bind((host, port)) #绑定主机和端口号
s.listen(1) #设置一次最多只监听一个连接 print "Server is running on port %d" % port while 1:
clientsock, clientaddr = s.accept() #当客户端连接时,accept会返回两个信息一个客户端socket和客户端ip,端口号
"""
这里使用了一个文件类对象,从客户端读取一个字符串,显示一个应答,最后关闭文件类对象和客户端socket
"""
clientfile = clientsock.makefile('rw', 0)
clientfile.write("Welcome," +str(clientaddr)+"\n")
clientfile.write("Please enter a string:")
line = clientfile.readline().strip()
clientfile.write("You entered %d characters.\n" % len(line))
clientfile.close()
clientsock.close()

首先运行服务端,然后在cmd中输入telnet localhost 51423连接服务端,会得到以下结果:

你也许会发现我没有编写telnet协议,但是telnet客户端也能通信。

最新文章

  1. js中字符串相关知识点总结
  2. JsTree实现简单的CRUD
  3. struts2+hibernate+poi导出Excel实例
  4. eclipse插件开发中全局对象的获取
  5. 使用Hadoop打造私有云盘之API操作
  6. RSA 加解密 签名 示例
  7. cocos2d-x学习日志(10) --射击游戏(喵星战争)
  8. CoreSeek Sphinx 安装
  9. Weka开发[4]-特征选择
  10. docker registry私有仓库部署
  11. Oracle联机日志损坏解决办法
  12. bzoj3702二叉树 线段树合并
  13. Java8 按照类属性去重
  14. linux系统版本查看
  15. 矢量图形(vector graphics)和位图图像(bitmap)以及分辨率概念
  16. TCP/IP 笔记 - TCP保活机制
  17. 引用数据类型 Scanner和 Random
  18. db2 表空间容量
  19. 学习笔记:webpack
  20. YII创建应用

热门文章

  1. Learn GIT
  2. mysql 5.7.16安装与给远程连接权限
  3. Python if 和 for 的多种写法
  4. DAL.SQLHelper 的类型初始值设定项引发异常的处理
  5. [地图SkyLine二次开发]框架(3)
  6. MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)
  7. 在web.xml注册applicationContext.xml配置文件
  8. Struts2标签之Checkbox
  9. 20145224&20145238 《信息安全系统设计基础》 第五次实验
  10. java_ee_sdk-7u2的安装与 启动