`
wangtong40
  • 浏览: 254006 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python 客户端Socket编程

阅读更多

第2章    网络客户端
网络客户端开发步骤:
1、    建立socket对象。
2、    调用connect()建立连接

2.1    建立Socket

import socket

print "Creating socket...."
# socket.socket(协议,通讯方式) 创建socket对象
# socket.AF_INET使用PIV4协议;
# socket.SOCK_STREAM TCP通讯方式
# socket.SOCK_DGTAM UDP通讯方式
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Done'
print 'Connecting to remote host...'
# 连接服务器: IP,port
s.connect(("10.10.151.70", 8080))
print 'done.'
 


2.2    寻找端口号

import socket

print 'Create socket...'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'done'

print 'Looking up port number...'
# 通过socket的getservbyname()函数查询端口号
port = socket.getservbyname('http', 'tcp')
print 'done.'

print 'Connecting to remote host on port %d...' % port
s.connect(('www.google.com', port))
print 'done.'
 



2.3    获取socket信息

import socket

print 'Creating socket...'
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'done.'

s.connect(('localhost', 8080))
print 'done.'
# 显示本机的IP地址和端口号
print 'Connected from', s.getsockname()
# 显示远端服务器的IP地址和端口号
print 'Connected to ', s.getpeername()
 


2.4    socket通信
Socket通讯Python提供了2中方式:socket对象和文件类对象。
1、    socket对象:send()、sendto()、recv()、recvfrom()等方法。
2、    文件类对象:read()、write()、readline()。


Socket对象适用范围:
读写数据时,需要协议详细控制时、使用二进制协议传送固定大小数据时、数据超时处理时还有编写UDP程序时,socket对象都是很好的选择。
文件类对象适用范围:用于面向线性的协议,他能通过提供的readline()函数自动处理大多数解析,但是对于UDP协议支持不好。

2.4.1    Socket对象实例

import socket, sys

host = sys.argv[1] #主机IP
textport = sys.argv[2] #端口号
filename = sys.argv[3] #服务器文件名称

#建立socket对象
try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, e:
    print 'Strange error creating socket:%s' % e
    sys.exit(1)

#解析端口号
try:
    port = int(textport)
except  ValueError:
    try:
        port = socket.getservbyname(textport, 'tcp')
    except socket.error, e:
        print 'Couldn not find your port:%s' % e
        sys.exit(1)

#创建连接
try:
    s.connect((host, port))
except socket.gaierror, e:
    print 'Address-related error connecting to server :%s' % e
    sys.exit(1)
except socket.error, e:
    print 'Connection error:%s' % e
    sys.exit(1)

#发送文件
try:
    s.sendall("GET %s HTTP/1.0\r\n\r\n" % filename)
except socket.error, e:
    print 'Error sending data:%s' % e
    sys.exit(1)

#清除缓存内容
try:
    s.shutdown(1)
except socket.error, e:
    print 'Error sending data:%s' % e
    sys.exit(1)


while True:
    try:
        buf = s.recv(2048) #接收数据
    except socket.error, e:
        print 'Error receiving data:%s' % e
        sys.exit(1)
    if not len(buf):
        break
    sys.stdout.write(buf)
 

       
2.4.2    文件类对象实例
i

mport socket, sys, time

host = sys.argv[1]
textport = sys.argv[2]
filename = sys.argv[3]

#创建socket对象
try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, e:
    print 'Strange error creating socket:%s' % e
sys.exit(1)

#创建端口号
try:
    port = int(textport)
except  ValueError:
    try:
        port = socket.getservbyname(textport, 'tcp')
    except socket.error, e:
        print 'Couldn not find your port:%s' % e
        sys.exit(1)

#连接socket
try:
    s.connect((host, port))
except socket.gaierror, e:
    print 'Address-related error connecting to server :%s' % e
    sys.exit(1)
except socket.error, e:
    print 'Connection error:%s' % e
    sys.exit(1)

fd = s.makefile('rw', 0) #使用文件类对象
print 'sleeping...'
time.sleep(10) #线程休息10S
print 'Continuing...'


try:
    s.sendall("GET %s HTTP/1.0\r\n\r\n" % filename)
except socket.error, e:
    print 'Error sending data:%s' % e
    sys.exit(1)

try:
    fd.flush()
except socket.error, e:
    print 'Error sending data: %s' % e
    sys.exit(1)

try:
    s.shutdown(1)
    s.close()
except socket.error, e:
    print 'Error sending data:%s' % e

while True:
    try:
        buf = fd.read(2048)
    except socket.error, e:
        print 'Error receiving data:%s' % e
        sys.exit(1)
    if not len(buf):
        break
    sys.stdout.write(buf)
 


2.5    UDP通信
UDP通信不使用文件类对象,因为他不能为数据如何发送和接收提供足够的控制。

import socket, sys
host = sys.argv[1]
textport = sys.argv[2]
# 使用SOCK_DGRAM 报文
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
    port = int(textport)
except ValueError:
    # 使用UDP协议
    port = socket.getservbyname(textport, 'udp')
   
s.connect((host, port))
print 'Enter data to transmit:'
data = sys.stdin.readline().strip()
s.sendall(data)
print 'Looking for replies; press Ctrl-C or Ctrl-Break to stop.'

while True:
    buf = s.recv(2048)
    if not len(buf):
        break
    sys.stdout.write(buf)
 

 

3
0
分享到:
评论

相关推荐

    python的socket编程

    ### Python的Socket编程 在计算机网络中,socket(套接字)是一种用于进程间通信的机制,它允许不同计算机上的程序通过网络进行双向通信。本文将深入探讨如何使用Python进行socket编程,特别是创建一个简单的图形...

    python socket 网络编程

    Python的socket库是进行网络通信的基础模块,它提供了低级别的、原始的套接字接口,使得程序员能够构建自己的网络应用程序,如服务器和客户端。在"python socket 网络编程"这个主题中,我们将深入探讨如何利用socket...

    基于python的socket实现单机五子棋到双人对战

    通过这个过程,我们将学习到Python中的socket编程基础、多线程处理以及如何设计一个简单的网络应用程序。 #### 技术栈与环境 - **Python版本**:推荐使用Python 3.x。 - **开发工具**:推荐使用PyCharm或VS Code等...

    python C socket 编程

    在网络通信中,Socket编程是一种基础且重要的技术,它允许程序之间通过网络进行数据交换。本篇将深入探讨如何使用Python和C进行Socket编程。 首先,让我们了解Socket的基本概念。Socket可以看作是两台计算机之间的...

    基于Python的 socket 编程实战

    基于Python的Socket编程实战涉及创建网络应用程序,利用Python内置的socket库实现客户端和服务器之间的通信。Socket编程是一种低级网络编程技术,用于在网络上进行数据传输,支持多种协议,包括TCP和UDP。 首先,...

    python socket 网络编程 教程

    这些基础知识将帮助学习者更好地理解网络编程的原理以及Python中socket编程的实现方式。 Python编程语言是通用的,解释性的,并且具有良好的可移植性。Python的解释性允许开发者在不编译代码的情况下直接运行程序,...

    python socket编程实例(服务端及客户端)

    Python的socket库是进行网络通信的基础模块,它提供了低级别的、原始的套接字接口,...理解并熟练掌握socket编程是成为合格的网络程序员的基础。通过这个实例,你可以进一步探索网络编程的奥秘,不断拓展自己的技能树。

    Python3 Socket编程

    Python3中的Socket编程主要涉及以下几个核心概念: 1. **Socket对象创建**:使用`socket.socket()`函数,传入`AddressFamily`(地址家族)和`Type`(套接字类型)参数。通常,`AF_INET`用于Internet进程间通信,`...

    Python 通过 socket 实现服务端和客户端相互间网络通信的例子

    在Python编程语言中,`socket`模块是进行网络通信的基础工具。它允许程序创建和使用网络连接,使得服务器端和客户端能够交换数据。本例中,我们探讨的是如何使用Python的socket库创建一个简单的服务端(server.py)...

    基于Python的socket网络编程

    首先,让我们了解基础的socket编程。在Python中,socket模块提供了低级的网络通信接口,允许程序创建和管理网络连接。socket对象用于建立客户端和服务器之间的通信。创建一个socket通常需要两个步骤:调用`socket....

    python socket编程实例

    Python的socket编程是网络通信的基础,它允许不同的计算机之间相互通信。socket编程是构建客户端和服务器应用程序的核心技术之一。 标题中提到的“Python socket编程实例”意味着本文将通过实例来指导Python开发者...

    python 使用socket传输图片视频等文件的实现方式

    通过socket编程可以实现两者的通信。socket是用于实现网络通信的程序接口,它支持不同的传输协议,但在本例中我们使用的是TCP协议。 服务器端代码首先设置了本机在局域网中的地址和一个端口。使用socket AF_INET来...

    SOCKET客户端编程步骤实例

    在IT领域,网络通信是不可或缺的一部分,而Socket编程则是实现这一功能的核心技术。本文将深入讲解如何进行Socket客户端编程,以TCP协议为例,基于提供的"TCP_Client"文件名称,我们将探讨TCP客户端的基本步骤。 ...

    Socket programming in Python 3.7_quick4y7_Socketpython_socket编程_

    Python中的socket编程是网络通信的基础,它允许程序作为服务器或客户端进行数据交换。在Python 3.7中,socket库提供了丰富的功能来处理TCP(传输控制协议)和UDP(用户数据报协议)等网络通信协议。这个教程"Socket ...

    Python 中的 Socket 编程

    Python 中的 Socket 编程 说明 译者注 授权 开始 Socket API 概览 TCP Sockets 客户端 / 服务器echo 程序 echo 程序的服务端 echo 程序的客户端 运行echo 程序的客户端和服务端 查看 socket 状态 通信流程的分解 ...

    Python的Socket编程教程[参照].pdf

    总的来说,Python的Socket编程提供了强大的网络通信能力,允许开发者构建自己的网络客户端和服务器。通过学习和实践,你可以掌握如何利用Socket进行数据交换,实现跨设备的通信。理解Socket的工作原理和使用方法是...

    socket客户端

    Socket客户端是网络编程中的一个重要概念,它允许程序通过TCP或UDP协议与其他运行在网络上的程序进行通信。在本案例中,我们关注的是一个使用C#语言编写的Socket客户端代码,这通常用于实现客户端-服务器(C/S)架构...

    使用Python进行socket编程.pdf

    根据提供的文件信息,我们可以提炼出以下几个知识点: 1. Python基础语法 文件开头部分的代码片段涉及到...以上知识点是根据文档提供的内容提炼出来的,可以为理解Python socket编程以及Python网络编程基础提供参考。

    一个简单的Python Socket编程示例,包括一个简单的服务器和客户端

    一个简单的Python Socket编程示例,包括一个简单的服务器和客户端。 解释说明: 服务器端代码: 使用 socket.socket() 创建一个新的socket对象 server_socket,参数 socket.AF_INET 表示使用IPv4地址族,socket....

    python:socket传输大文件示例

    在Python编程中,Socket是网络通信的基本模块,用于实现不同计算机之间的数据传输。本文将深入讲解如何使用Python的Socket库来传输大文件。文件传输在许多应用中都是必不可少的,例如分布式系统、文件共享和备份等。...

Global site tag (gtag.js) - Google Analytics