Python网络编程

Socket:

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

Python提供了两个级别访问的网络服务:

  • 低级别的网络服务支持基本的 Socket,提供了标准的 BSD Sockets API ,可以访问底层操作系统Socket接口的全部方法。
  • 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

socket()函数:

Python中,使用 socket() 函数来创建套接字

socket.socket(family,type,protocol)

参数

  • family: 套接字家族可以使AF_UNIX(用于同一台机器进程间通信)或者AF_INET(用于Internet进程间通信)
  • type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM(流式套接字,主要用于TCP协议)SOCK_DGRAM(数据报套接字,主要用于UDP协议)
  • protocol: 一般不填默认为0.

若创建 socket 函数失败,会抛出一个 socket.error 的异常,最好捕获

以下为一个简单的C/S例子

#server.py
import socket  #导入socket模块
import sys

try:
    s = socket.socket() #创建socket对象
except socket.error as msg:
    print('Failed to create socket. Error code: ' + str(msg[0]) + ' , Error message : ' + msg[1])
    sys.exit();
host = socket.gethostname()  #获取本地主机名
port = 12345  #设置端口
s.bind((host, port))   #绑定端口

localIP = socket.gethostbyname(socket.gethostname())#得到本地ip
print ("local ip:%s "%localIP)

s.listen(5)   #等待客户端连接
while True:
    connection, addr = s.accept()  #建立客户端连接
    print('连接地址: ', addr)
    connection.send('welcome...'.encode())
    print('Done!')
    connection.close()  #关闭连接

 

 

#client.py
import socket   #导入socket模块

s = socket.socket()   #创建socket对象
host = socket.gethostname() #获取本地主机名
port = 12345

s.connect((host, port))
data = s.recv(1024)
print(data.decode())
s.close()

 

Socket对象方法:

 

一篇值得学习的博客

posted @ 2018-01-19 09:56  dear_diary  阅读(434)  评论(0编辑  收藏  举报