博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python socket 模拟tcp通讯
阅读量:5081 次
发布时间:2019-06-13

本文共 1573 字,大约阅读时间需要 5 分钟。

对于tcp server 端的创建而言, 分为如下步骤: 

 
1,创建socket对象(socket):其中俩个参数分别为
    Address Family(如AF_INET为ipv4),
AF_INET6为ipv6,AF_UNIX为unix域协议簇). 
    
socket类型(如SOCK_STREAM为tcp,SOCK_DGRAM为udp)
2,绑定服务器地址(bind) : 参数为服务器地址二元组 也就是套接字 
3,监听(listen): 参数为允许的连接数 
4,等待请求(accpet): 建立一个连接,等待客户端
5,接收数据(recv,recvfrom ,recvfrom_into ,recv_into)  
6,发送数据(send ,senfall ,sendto) 
7,关闭连接(close) 
 
 
代码: 
 
#! /usr/bin/python# -*- coding: utf-8 -*-import socketsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)server_address = ("127.0.0.1",12345)print "Staring up on %s:%s" %  server_addresssock.bind(server_address)sock.listen(5) while True:    print "waiting .........."    connetion,client_address = sock.accept()    try:        print  "Connection from ",client_address        data = connetion.recv(1024)        print "Receive '%s'" % data    finally:        connetion.close()

 

 

 

对于tcp client端而言 , 分为以下几个步骤:

1
创建socket对象( socket) : 同server端
2,连接服务器(connect) : 参数为服务器地址二元组
3,发送和接收数据: 同server端
4,关闭连接 : 同server端
 
 
代码: 
#! /usr/bin/python# -*- coding: utf-8 -*-import socketsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)def check_tcp_status(ip,port):     sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)    server_address = (ip,port)    print "connecting to %s:%s" % server_address,port    sock.connect(server_address)     message = raw_input("pleas input: ")    print "Sending '%s'" % message    sock.sendall(message)    print "Closing socket"    sock.close() if __name__ == "__main__":    print check_tcp_status("127.0.0.1",12345)

 

 

转载于:https://www.cnblogs.com/budongshu/p/49750e9e48b351bcb25e4aecb0cf2932.html

你可能感兴趣的文章
日常开发时遇到的一些坑(三)
查看>>
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>