python socket   编程之一(练习)

今天不算忙,难得有时间闲下来了解一下socket的通信机制原理,顺便写一个简单的案例,以方便后期学习,积累。

一、服务端绑定一个端口号、并处于监听状态。用accept()接收发来的数据请求:

二、客户端通过地址和端口号连接服务端,并发送数据请求。

三、服务端收到后,处理请求,并发请求发给客户端。如何客户端还在连接请求,那么就循环操作。

四、客户端处理完数据之后,发送关闭请求,服务端收到请求后也开始关闭连接。

以上简介来自51cto博友分享

服务端代码

server_m.py

#!/usr/bin/env python

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

import SocketServer

class myMonitorHandler(SocketServer.BaseRequestHandler):

def handle(self):

recv_data = self.request.recv(1024) ##定义接收到的数据大小

print "From 客户端 %s : %s" % (self.client_address,recv_data)

if __name__ == "__main__":

host,port = ‘‘,5000   #接收来自任意客户端IP,指定port为5000的数据

server = SocketServer.ThreadingTCPServer((host,port),myMonitorHandler)

server.serve_forever()

~

客户端代码

client_m.py

import socket

name = socket.gethostname()  #随意定义,这里为获取本机主机名

host, port = "192.168.101.52",5000      #指定server ip和port 推送数据

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #指定传输的数据类型和结构。

s.connect((host,port))   #链接以上指定的主机端口

s.sendall(name)  #将获取到的变量name值传送到服务端

s.close()        #关闭请求链接

~

测试:

先启动服务器端#python m_server.py

后启动客户端#python m_client.py

备注:如果先启动客户端,客户端链接不到服务端会抛出异常

socket.error: [Errno 111] Connection refused

test result:

可以任意将变量name作为一个变量参数传入 比如命令  df -h   free -m 等等

时间: 2024-12-06 02:01:29

python socket   编程之一(练习)的相关文章

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

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu

python socket编程入门(编写server实例)+send 与sendall的区别与使用方法

python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参数代表地址家族,可为AF_INET或AF_UNIX.AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信. type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字). 2. 第二步是将socket绑定到指定地址.这

python/socket编程之粘包

python/socket编程之粘包 粘包: 只有TCP有尿包现象,UDP永远不会粘包. 首先需要掌握一个socket收发消息的原理 发送端可以是1k,1k的发送数据而接受端的应用程序可以2k,2k的提取数据,当然也有可能是3k或者多k提取数据,也就是说,应用程序是不可见的,因此TCP协议是面来那个流的协议,这也是容易出现粘包的原因而UDP是面向笑死的协议,每个UDP段都是一条消息,应用程序必须以消息为单位提取数据,不能一次提取任一字节的数据,这一点和TCP是很同的.怎样定义消息呢?认为对方一次

python socket编程 TCP

python socket编程 TCP by wuxy server.py import socket import commands BUF_SIZE = 1024 server_addr = ('127.0.0.1',8888) server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind(se

python socket编程 UDP

python socket编程 UDP by 伍雪颖 server.py import socket BUF_SIZE = 1024 server_addr = ('127.0.0.1',8888) server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) server.bind(server_addr) while True: print "waiting for data" data,client_addr = server.

【转】一个简单的python socket编程

原文链接:转载:一个简单的python socket编程 python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参数代表地址家族,可为AF_INET或AF_UNIX.AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信.      type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRA

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

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

PYTHON SOCKET编程简介

原文地址: PYTHON SOCKET编程详细介绍 Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发. 下面讲的是Socket模块功能 1.Socket 类型 套接字格式: socket(family,type[,protocal]) 使用给定的地址族.套接字类型.协议编号(默认为0)来创建套接字. socket类型 描述 socke

[Python_7] Python Socket 编程

0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*- """ TCP 协议的 Socket 编程,Server 端 Server 端绑定到指定地址,监听特定的端口,接受发来的连接请求 """ import threading import socket import time class CommThread(thre

python Socket编程-python API 与 Linux Socket API之间的关系

python socket编程 服务端 #!/usr/bin/env python # coding=utf-8 from socket import * HOST = '' PORT = 2345 BUFSIZE = 1024 ADDR = (HOST,PORT) #创建AF_INET地址族,TCP的套接字 with socket(AF_INET,SOCK_STREAM) as tcpSerSock: #绑定ip和端口 tcpSerSock.bind(ADDR) #监听端口,是否有请求 tcp