Python基础——网络编程

原创 2016年05月31日 22:55:19

在网络编程中主要是使用Socket(套接字)进行编程,套接字相当于应用程序访问下层网络的服务的接口,使用Socket可以是得不同主机之间进行通信,从而实现数据交换。

1、Socket工作方式

套接字在工作的时候连接的两端分别为客户端和服务器端,对于客户端和服务器端的工作方式是不一样的。

对于服务器端,服务器程序会在一个端口上监听服务请求,该服务器进程是一直存在的,当有客户端请求访问时,服务器进程会和客户端进程进行通信。

在Python中的套接字模块是socket模块。

2、服务器端

在上述的Socket工作原理中,服务器端程序会在一个端口上监听请求服务,当有客户端请求访问时,才和客户端进程进行通信。在Python中提供的socket模块可以较为方便的实现基本的原理。对于服务器端,当生成了套接字对象后,要实现与客户端进行通信,有如下的一些步骤:

  • 调用bind()方法绑定一个套接字端口地址
  • 使用listen()方法对该端口进行客户端请求的监听
  • 当有客户端请求时,通过accept()方法生成一个连接对象,通过该连接对象发送和接受数据
  • 当数据传输完毕,调用close()方法将生成的连接关闭

利用Python实现一个简单的服务器端程序:

#coding:UTF-8

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind(('127.0.0.1', 1234))

s.listen(10)

while True:
    c, addr = s.accept()

    print "client address: ", addr
    c.send("Welcome!!!")

    c.close()

3、客户端

与服务器端相对应,客户端请求服务器端的访问,当服务器端接受了客户端的请求后,便可以与服务器端进行通信。客户端程序在生成套接字对象后的基本过程如下:

  • 调用bind()方法绑定自己的请求套接字地址(该步骤可选)
  • 调用connect()方法连接服务器端的进程
  • 当连接成功后,可使用send()方法发送数据,使用recv()函数接收数据
  • 当数据传输结束后,可调用close()方法关闭连接

利用Python实现一个简单的客户端程序:

#coding:UTF-8

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind(('127.0.0.1', 2345))

s.connect(('127.0.0.1', 1234))#连接的是主机的地址和端口地址

info = s.recv(1024)
print info

s.close()

运行结果如下:

  • 服务器端

这里写图片描述

  • 客户端

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

自然语言中的重要概念——熵(Entropy)

一、背景 二、熵 1、信息熵 2、条件熵 3、联合熵 4、相对熵 三、互信息

机器学习中的常见问题——损失函数

import matplotlib.pyplot as plt import numpy as np xmin, xmax = -4, 4 xx = np.linspace(xmin, xmax, ...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

挑战数据结构与算法面试题——80题全解析(一)

题目来源“数据结构与算法面试题80道”。

挑战数据结构与算法面试题——80题全解析(三)

题目来源“数据结构与算法面试题80道”。这是第三部分,包含其中的第11题到第15题。 在此给出我的解法,如你有更好的解法,欢迎留言。

论文阅读——YouTube推荐中的深层神经网络

摘要 在现今的工业级推荐系统中,YouTube是其中最大规模和最复杂的代表之一。在本文中,我们从高层次上对该系统进行描述,同时聚焦在深度学习给该系统带来的引人注目的性能提升。本文按照经典的两阶段信息...

python基础知识——字符串

1、字符串的格式化 python将若干值插入到带有“%”标记的字符串中,实现动态地输出字符串。 格式: "%s" % str "%s%s" % (str_1, str_2) 例如: str...

优化算法——遗传算法

与遗传算法的第一次接触 遗传算法的基本概念 基本定义 遗传算法的基本流程 遗传算法过程中的具体操作 参数的编码 二进制编码 Gray编码 实数编码 有序编码 初始群体的设定 适应度函数的计算 遗传操作...

深度学习算法原理——神经网络的基本原理

注:最近打算将UFLDL教程重新看一遍,其实里面有很多关于神经网络以及深度学习的知识点很有用,但是只是学习深度学习的话有一些内容就有点多余,所以想整理一个笔记,记录下神经网络到深度学习的一些知识点。整...

神经网络深度学习链接斯坦福CS231n课程

神经网络深度学习  朋友推荐的一个神经网络学习课程,讲师李菲菲,有中文字幕很赞。 参考 斯坦福CS231n课程 http://study.163.com/course/courseLearn....
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)