python socket 学习
Python在网络通讯方面功能强大,今天学习一下Socket通讯的基本方式,分别是UDP通讯和TCP通讯。
UDP通讯
upd 服务端
#!/usr/bin/env python
# -*- coding:utf-8 -*- import socket ADDR,PORT = 'localhost',7878
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind((ADDR,PORT)) print 'waiting for connection...' while True:
data, addr = sock.recvfrom(1024)
print('Received data:', data, 'from', addr)
upd客户端
#!/usr/bin/env python
# -*- coding:utf-8 -*- import socket ADDR,PORT = 'localhost',7878
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.sendto(b'hello,this is a test info !',(ADDR,PORT))
先开启server端,等待client端的接入,每请求一次client会打印如下内容
waiting for connection...
('Received data:', 'hello,this is a test info !', 'from', ('127.0.0.1', 57331))
('Received data:', 'hello,this is a test info !', 'from', ('127.0.0.1', 61396))
('Received data:', 'hello,this is a test info !', 'from', ('127.0.0.1', 61261))
('Received data:', 'hello,this is a test info !', 'from', ('127.0.0.1', 54875))
TCP通讯
TCP服务端
#!/usr/bin/env python
# -*- coding:utf-8 -*- from socket import *
import os ADDR,PORT = 'localhost',7878
sock = socket(AF_INET,SOCK_STREAM)
sock.bind((ADDR,PORT))
sock.listen(5) while True:
conn,addr = sock.accept()
print "new conn:",addr
while True:
print 'waiting for connection'
data = conn.recv(1024)
if not data:
print '客户端已经断开'
break
print '执行指令',data
cmd_res = os.popen(data).read() #为执行传回的指令
if len(cmd_res) == 0:
print 'cmd has no output...' conn.send(str(len(cmd_res)).encode('utf-8')) #发送大小
#client_chk = conn.recv(1024) 解决粘包问题 #wait client to confirm
conn.send(cmd_res)
print 'send done'
conn.close()
sock.close()
TCP客户端
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from socket import * ADDR,PORT = 'localhost',7878
sock = socket(AF_INET,SOCK_STREAM)
sock.connect((ADDR,PORT))
while True:
data = raw_input('>>')
sock.send(data)
print('发送信息到%s:%s' % (host, data))
cmd_size = sock.recv(1024)
print '命令结果大小 size',cmd_size
sock.send('准备好接收了,可以发了')
received_size = 0
received_data = b''
while received_size < int(cmd_size):
data = sock.recv(1024)
received_size += len(data)
received_data += data
print received_size
else:
print '=================\r\n'
print 'cmd receive done',received_size
print 'receive data:\r\n',received_data sock.close()
python socket 学习的更多相关文章
- Python Socket学习之旅(一)
Socket概述 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向 网络发出请求或者应答网络请求. s ...
- python socket学习
import socket localip=socket.gethostbyname(socket.gethostname()) print (localip) iplist=socket.getho ...
- Python Socket学习之旅(二)
Socket函数 注解: Socket的close和shutdown--结束数据传输: close-----关闭本进程的socket id,但链接还是开着的,用这个socket id的其它进程还能用这 ...
- Python网络socket学习
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- Python Socket 网络编程
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- python爬虫学习(1) —— 从urllib说起
0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...
- Python Socket,How to Create Socket Server? - 网络编程实例
文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...
- Python爬虫学习:二、爬虫的初步尝试
我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...
随机推荐
- centos7.2进入单用户模式
1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4 - 现在按下 Co ...
- 关于MFC文本框输入内容的获取 与 设置文本框的内容
八月要开始做界面了<( ̄︶ ̄)/,然而目前只会用MFC╮(╯▽╰)╭ 好吧,言归正传,设置好文本框后,要获取用户输入的内容,可以用: GetDlgItemText() ; 这个函数有两个参数,第 ...
- http://blog.csdn.net/chenriwei2/article/details/38047119
SSP或者说是空间金字塔匹配(spatial pyramid matching or SPM)是BoW的一个扩展,它把一张图片划分为从不同的分辨率级别然后聚合这些不同分辨率的图像,在深度学习之前SPM ...
- ORA-00060:等待资源时检测到死锁的一种处理方法
先执行脚本: SELECT p.sipid, a.serial#, c.object_name, b.session_id, b.oracle_username, b.os_user_name FRO ...
- C#学习感悟
上周虽然没上课,课上的内容是部分同学展示大作业成果,但是对于我来说,看了一些同学辛勤劳动的成果,听了他们对C#学习的一些感悟,我受益匪浅. 在这里我想谈谈我的收获.老师给的模板是todolist,但是 ...
- Lua 栈的理解
提到C++与lua互调,不可不提栈. 栈是C++和Lua相互通讯的一个地方. 首先这个栈并不是传统意义上的栈(传统的栈需要放同一种数据类型,但在网上的某些资料说,每个栈元素是一个联合体). 栈从上向下 ...
- Bookstore project using XAMPP 详细配置 Part 2
2. Implementation of MySQL database in “phpMyAdmin” 1) Create database named “tbl_book” 2) I changed ...
- 申请Google API Key
想使用google map api 必须从google网站上获取key之后才有权限使用,但是要想申请key必须要有证明书,也就是所谓的MD5.下面一步一步来说明: 步骤1: 如果你使用的是eclips ...
- go程序注册为windows服务
cmd下运行:nssm install 服务名 go打包好的exe文件 nssm下载地址:http://nssm.cc/,将下载好nssm.exe放到/windows/system32文件夹下
- Ubuntu 初始化Root账户密码
昨晚新装的Ubuntu12(电脑太烂了),每次都记不住初始化root密码的命令,既然决定开始写自己的园子了,那就在自己的园子里面记一下,方便自己稳固之心 好了,不废话了了 draenei@ubuntu ...