python网络编程学习

网络通讯python

  边缘网络中的主机数目庞大,计算机网络是如何实现网络中的两台主机之间的通讯的呢?编程

  简单的来讲,计算机网络中的主机通讯如同现实生活中的物流,当咱们须要发送一个快递时,咱们须要首先须要准备本身要发送的物品,至关于网络体系结构中的应用层,编写本身的发送的消息;第二,要发送的物品每每须要一个外包装,避免物品的损坏,至关于应用层的消息传递到传输层进行的封装(消息封装为分组);第三,填写快递单的收发地址,于网络层中填写IP,端口地址相同;第四,将快递交给站点准备发送,等价于在链路层将分组数据包封装成帧,准备在物理层发送;最后,快递员经过既定的物流路线将快递发送出去,与在物理层经过路由信息表将帧发送出去相同。服务器

 

网络数据包传送网络

  网络中数据包的传送大体分为两类:socket

  1.   TCP传送:基于TCP协议,完成完整的3此握手过程,实现可靠的信息传送,可以保证发送的消息必定可以传送到接收方。
  2.   UDP传送:基于UDP协议,相似于洪泛传送,不会完成3此握手过程,所以不可以保证发送的消息必定可以被接收方接收

Socket编程ide

  python经过使用socket抽象网络中主机进程之间的交互实现网络通讯。Socket实现了IP地址与端口的抽象,其中IP指定了主机在网络中的位置,端口指定了主机上接收,发送信息的应用程序。函数

  python中,Socket又称"套接字",应用程序一般经过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间能够通信。spa

  服务器端Socket编程计算机网络

    建立Socket对象code

    绑定到相应的IP地址端口

    打开监听服务

    接收数据

    关闭Socket

  客户端Socket编程

    建立Socket对象

    链接到远程主机IP地址端口

    发送数据

    关闭Socket

Socket对象建立函数

    socket.socket([family[, type[, proto]]])

    familly:对应协议簇,AF_UNIX或者AF_INET

    type:对应面向链接的仍是非链接分为SOCK_STREAMSOCK_DGRAM(TCP和UDP)

    proto:协议,HTTP,SMTP等

  Socket内置方法

    服务器:

      s.bind():绑定地址

      s.listen():开启监听服务

      s.accept():被动等待接收客户端的链接请求

    客户端:

      s.connect():链接到远程主机

    公用:

      s.recv():接收TCP数据流

      s.send():发送TCP数据流

      s.recvfrom():接收UDP数据流

      s.sendto():发送UDP数据流

      s.close():关闭一个socket链接

      s.getpeername():返回链接套接字的远程地址

      s.getsockname():返回套接字本身的地址

      s.setsockopt():设置给定套接字选项的值

      s.getsockopt():返回套接字选项的值

      s.makefile():建立一个与该套接字相关连的文件

实例

    

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

import socket

s = socket.socket() #建立socket对象
host = socket.gethostname() #获取本机主机名
port = 20000
s.bind((host, port))

s.listen(5) #开启监听服务,5表示最大能够链接5个客户机

while True:
    c, address = s.accept() #创建一个客户链接
    print '客户端地址:', address 
    c.send('hello') #向客户端发送消息
    c.close() #关闭一个socket链接
Server Code
# -*- coding: utf-8 -*-

import socket

s = socket.socket() #建立socket对象

host = socket.gethostname() #调用socket类方法获取主机名
port = 20000 #定义绑定端口

s.connect((host, port)) #链接到远程主机

print s.recv(1024) #接收数据,1024是字节数
s.close() #关闭一个socket链接
Client Code
相关文章
相关标签/搜索