Python Socket Client及Server简单编程

本文主要介绍使用Python语言编写Socket协议Server及Client的简单实现方法。

  1. Python Socket编程简介

  Socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

  三种流行的套接字类型是:stream,datagram和raw。stream和datagram套接字可以直接与TCP协议进行接口,而raw套接字则接口到IP协议。

  Python Socket模块提供了对低层BSD套接字样式网络的访问,使用该模块建立具有TCP和流套接字的简单服务器。详见https://docs.python.org/2/library/socket.html

  2. Python Socket Server

  实现代码如下


# -*- coding:utf-8 -*-

from socket import *

def SocketServer():

try:

Colon = ServerUrl.find(':')

IP = ServerUrl[0:Colon]

Port = int(ServerUrl[Colon+1:])

#建立socket对象

print 'Server start:%s'%ServerUrl

sockobj = socket(AF_INET, SOCK_STREAM)

sockobj.setsockopt(SOL_SOCKET,SO_REUSEADDR, 1)

#绑定IP端口号

sockobj.bind((IP, Port))

#监听,允许5个连结

sockobj.listen(5)

#直到进程结束时才结束循环

while True:

#等待client连结

connection, address = sockobj.accept( )

print 'Server connected by client:', address

while True:

#读取Client消息包内容

data = connection.recv(1024)

#如果没有data,跳出循环

if not data: break

#发送回复至Client

RES='200 OK'

connection.send(RES)

print 'Receive MSG:%s'%data.strip()

print 'Send RES:%s\r\n'%RES

#关闭Socket

connection.close( )

except Exception,ex:

print ex

ServerUrl = "192.168.16.15:9999"

SocketServer()

  注:需要注意的是Socket对象建立后需要加上sockobj.setsockopt(SOL_SOCKET,SO_REUSEADDR, 1),否则会出现Python脚本重启后Socket Server端口不会立刻关闭,出现端口占用错误。

  3. Python Socket Client

  实现代码如下


# -*- coding:utf-8 -*-

from socket import *

def SocketClient():

try:

#建立socket对象

s=socket(AF_INET,SOCK_STREAM,0)

Colon = ServerUrl.find(':')

IP = ServerUrl[0:Colon]

Port = ServerUrl[Colon+1:]

#建立连接

s.connect((IP,int(Port)))

sdata='GET /Test HTTP/1.1\r\n\

Host: %s\r\n\r\n'%ServerUrl

print "Request:\r\n%s\r\n"%sdata

s.send(sdata)

sresult=s.recv(1024)

print "Response:\r\n%s\r\n" %sresult

#关闭Socket

s.close()

except Exception,ex:

print ex

ServerUrl = "192.168.16.15:9999"

SocketClient()

  4. 运行结果

  Socket Server端运行截图如下:

  Socket-Server

  Socket Client端运行截图如下:

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-22 19:40:24

Python Socket Client及Server简单编程的相关文章

Python Socket 网络编程

原文:Python Socket 网络编程 Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ 聊天.收发 email 等等.要解决网络上两台主机之间的进程通信问题,首先要唯一标识该进程,在 TCP/IP 网络协议中,就是通过 (IP地址,协议,端口号) 三元组来标识进程的,解决了进程标识问题,就有了通信的基础了. 本文主要介绍使用 Python 进

Python Socket 编程——聊天室示例程序

原文:Python Socket 编程--聊天室示例程序 上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的例子,就是允许多个人同时一起聊天,每个人发送的消息所有人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.如下图: 图来自:http://www.ibm.com/de

Python Socket编程入门教程_python

这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. Python 官方关于 Socket 的函数请看 http://docs.python.org/library/socket.html 基本上,Socket 是任何一种计算机网络通讯中最基础的内容.例如当你在浏览器地址栏中输入 www.jb51.net 时,你会打开一个套接字,然后连接到 www.jb51.net 并读取响应的页面然后然后显示出来.而其他一些聊天客户端如

Python socket编程实例详解

  本文实例形式较为详细的讲述了Python socket编程.分享给大家供大家参考.具体如下: 复制代码 代码如下: sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 上面的代码创建了一个socket对象.type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字).AF_INET表示创建的是ip v4的类型. 复制代码 代码如下: socket(address_family,type,pro

python socket网络编程步骤详解(socket套接字使用)_python

一.套接字套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要.套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳.许多非BSD UNIX系统(如ms-dos,windows,os/2,mac os及大部分主机环境)都以库形式提供对套接字的支持.三种最流行的套接

java的socket的client和server都用多线程,server和client都是java,怎么解决,急急!!

问题描述 java的socket的client和server都用多线程,server和client都是java,怎么解决,急急!! client请求server建立连接 线程1:保持连接,client随时接收server消息并向server返回消息 线程2:向server发请求并接收server返回的消息 解决方案 加我QQ1357197829发给你 解决方案二: Java网络编程之多线程Client-Serverjava 和 C++ Socket通信(java作为服务端server,C++作为

【APACHE MINA2.0开发之一】搭建APACHE MINA框架并实现SERVER与CLIENT端的简单消息传递!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/apache-mina/831.html Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏向服务器Server端开发了,Hibernate.MySQL等都是为了Server端Mina开发而做的

linux socket传送图片-linux下用socket,client向server传送图片

问题描述 linux下用socket,client向server传送图片 可以实现字符串的传输,在向服务器传输图片存盘时,总是无法显示图片.下面代码是服务器和客户端传送图片的部分.求大神指定! 服务器端: unsigned char recPhotoBuff[100]; unsigned char sendPhotoBuff[100]; char recPhotoPath[50]; char recPhotoName[20]; FILE *recPhotoFp; FILE *sendPhotoF

有关python socket 多线程问题

问题描述 有关python socket 多线程问题 我现在写的程序是模拟p2p DHT 就是peer1 知道peer2 和 peer3的port 依此类推 现在我写了一个程序 打开的每个xterm端口是一个peer 窗口里可以显示ping所返回的信息代码如下我测试了好久 有的显示返回信息 有的显示接收信息 有的豆显示 有的根本不显示刚学编程半年 python很多东西不了解 socket 和多线程完全是先学先用的 所以请各位看一下到底问题出在哪里 以下是代码 import sysimport t