zoukankan      html  css  js  c++  java
  • python的socke编程

    python的sock编程分为TCP编程和UDP编程,两者不同在于,TCP需要首先建立连接才能发送接收数据,而UDP则可以直接发送接收不需要预先建立连接。

    tcp编程,我总结为4步

    TCP的server端

    1,建立socket对象,这里TCP和UDP是通用的比如

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)##这个是建立TCP的socket对象

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)##这个是建立UDP的socket对象

    2, 绑定tcp的IP和端口

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

    3,创建最大连接数量

    s.listen(5) ,这里创建了最大5个连接数

    4,获取客户端的socket对象,记住这里是获取的客户端传过来的socket对象,也就是客户端的IP和端口,等等其他一些信息

    cli_socket, addr = s.accept()

    cli_socket,客户端传过的socket信息

    addr,客户端的IP地址和端口

    5,接收或者发送数据

    这里是是这样子的,建立连接后,如果服务端先发送一个数据过去,那么客户端必须先接收一个,反过来相同,客户端如果先发送一个服务端必须先接收一个,然后才能再发送接收,反正服务端和客户端就是一发一收,一收一发,轮流来

    cli_socket.send("hello")

    cli_socket.recv(1024),这里的1024指每次最多接收1024字节

    最后要记得

    cli_socket.close() ,关闭远程客户端连接

    以上是整个socket服务端的简单流程。

    TCP的客户端

    1,首先创建一个socket对象

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

    2,连接到服务端

    s.connect(('127.0.0.1', 9000))

    3, 开始发送或者接收数据

    s.send("hello")

    s.recv(1024)

    客户端比较简单。

    UDP就更简单了,不需要预先建立连接,直接发送或者接收数据即可

    UDP服务端

    1, 建立socket对象

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ###注意和tcp的不同

    2,绑定IP和端口

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

    3,创建客户端的socket对象

    接收数据,并制定每次最大字节

    data, addr = s.recvfrom(1024)

    发送数据

    s.sendto(b'Hello, %s !' %data, addr) ###注意这里和TCP不同了,这里的发送对象的实体是服务端,并不是客户端的了

    4,客户端方面

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

    发送数据

    s.sendto(data, ('127.0.0.1', 9999))

    接收数据

    s.recv(1024).decode('utf-8')

    UDP方面比较简单,不用预先建立连接,暂时先写这么多,以后有需求地方再补充。

  • 相关阅读:
    “连城决”——预示2008年手机营销体式格式新打破
    都会演出连城诀—诺基亚N78决战入手入手了!
    Lyx:阔别单调的 LaTeX 节制命令
    [转载]Oracle 11g R1下的自动内存经管(2)
    假造化手艺是决胜企业IT化的关头
    请各位博友对HyperV的运用终了指摘
    有199元的Office,还要用盗版吗?
    十一回南通,当晚和同学去小石桥附近的网吧
    Windows 消息
    WinAPI: 钩子回调函数之 MsgFilterProc
  • 原文地址:https://www.cnblogs.com/hh2737/p/9904798.html
Copyright © 2011-2022 走看看