Python之Socket

简介:

wKioL1gYmsjC74WpAAGrbGjhMio078.png-wh_50

原理:服务端一直处理监听的状态,当客户端发起一个请求,服务端监听到请求建立连接,在建立连接时,若当前客户端没有结束,处于阻塞状态,当前的会话处于不断的交互状态,只有当前客户端结束回话后,才进行下个回话请求,若此时有另外一个连接,不会分配当前的服务端正在使用连接分配给后来的客户端绘画

通俗说理解SOCKET过程:小磊子和10086

    一天小磊子打电话给10086,10086的小红接到小磊子的电话,这时候小磊子就开始发牢骚问,我这个月的电话费怎么那么多(此时就是SOCKET建立会话连接通信过程),小红听到小磊子的牢骚后,开始在后台查询小磊子这个月的电话记录情况,然后小红把查到的数据告诉小磊子(此时是客户端:请求数据-请求处理--回应数据),你这个月凌晨跟某某女生.....此时浩哥也打电话给10086,要找小红,此时小红在接客状态,在给小磊子干活,无法接通(客户端阻塞连接),浩哥不开心,因为他想查下这个月他老婆最近夜里跟谁在打电话....就随便找了小丽为浩哥服务(此时是SOCKET的并发过程)......当小磊子挂掉电话后,此时与小红断开连接(结束连接),小红才能继续接客....继续等待下一个人到来....

Socket服务端编程主要包括下面几步:

1、打开socket

2、绑定到一个地址和端口

3、侦听进来的连接

4、接受连接

5、读取数据

客户端过程:

1、打开一个socket

2、连接一个地址和端口

3、读写数据

####网络通信,有TCP/IP还有其他...

socket type:

socket.AF_UNIX:只能够用于单一的unix系统进程间通信

socket.AF_INET:服务器之间网络通信

socket.AF_NET6IPV6

###简单例子

SERVER:

import socket

host=''

port=1122

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

s.bind((host,port))

s.listen(1)

conn,addr=s.accept()

print "connected by",addr

while True:

    data=conn.recv(1024)

    if not data:break

    conn.sendall(data)

conn.close()

###CLIENT:

import socket

host='127.0.0.1'

port=1122

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

s.connect((host,port))

s.sendall('hello,world')

data=s.recv(1024)

s.close()

print 'received',repr(data)



本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1868268

相关文章
|
2月前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
2月前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
2月前
|
网络协议 Linux Python
Python网络编程基础(Socket编程)epoll在Linux下的使用
【4月更文挑战第12天】在上一节中,我们介绍了使用`select`模块来实现非阻塞IO的方法。然而,`select`模块在处理大量并发连接时可能会存在性能问题。在Linux系统中,`epoll`机制提供了更高效的IO多路复用方式,能够更好地处理大量并发连接。
|
1天前
|
网络协议 Python
在Python中,我们使用`socket`模块来进行网络通信。首先,我们需要导入这个模块。
在Python中,我们使用`socket`模块来进行网络通信。首先,我们需要导入这个模块。
4 0
|
1月前
|
网络协议 Unix API
24.Python 网络编程:socket编程
24.Python 网络编程:socket编程
25 2
|
19天前
|
机器学习/深度学习 网络协议 Python
Python Socket深度学习分享
Python Socket深度学习分享
10 0
|
1月前
|
网络协议 Python
python中socket编程
python中socket编程
|
2月前
|
网络协议 API 调度
Python网络编程基础(Socket编程)asyncio库的使用
【4月更文挑战第12天】在Python的网络编程中,除了直接使用底层的Socket API,还有许多高级的网络编程库可以帮助我们更简洁、高效地构建网络应用。这些库通常提供了异步IO、事件循环、协议支持等功能,使得开发者能够更专注于业务逻辑的实现。其中,`asyncio`库是Python 3中引入的一个强大的异步IO库,它为我们提供了编写异步代码的基础设施。
|
2月前
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。
|
2月前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信