English 中文(简体)
The Socket and its Methods
  • 时间:2024-03-22 17:24:03

The Socket and its Methods


Previous Page Next Page  

袖珍是双向通信渠道的终点。 它们可以在一个过程之内、在同一机器的工艺之间或不同机器的工艺之间进行通信。 与此类似,一个网络袖珍是一个终端点,它连接了因特网等计算机网络的两个方案。 这纯粹是虚拟的,并不意味着任何硬件。 可通过一个独特的IP地址和港口号码组合确定网络的袖珍。 可在若干不同渠道,如肺结核、肺结核和疟疾等,使用网络电话。

与网络方案规划中使用的袖珍有关的不同术语如下:

Domain

属地是作为运输机制的规程。 这些数值是固定数值,如AF_INET、PF_INET、PF_UNIX、PF_X25等。

Type

类型是指两个终点之间的通信类型,通常是SOCK_STREAM用于面向联系的议定书,SOCK_DGRAM用于无关联议定书。

Protocol

这可用于确定一个领域和类型范围内的一项议定书的备选案文。 其违约价值为0。 这通常被排除在外。

Hostname

这是网络接口的识别特征。 名字是星号、 do号地址或IPV6在上校(可能的话)座标。

Port

每个服务器都为需要一个或多个港口的客户倾听。 港口可以是Fixnum港号、载有港口号码的载体或服务名称。

Python’s Socket Module for Socket Programming

为了在下午实施袖珍方案,我们需要使用Socket模块。 下面是一份简单的表格,以制作一个小册。

import socket
s = socket.socket (socket_family, socket_type, protocol = 0)

在这方面,我们需要进口袖珍图书馆,然后简便地提供材料。 以下是在编审时使用的不同参数:

    socket_family 如前所述,这是AF_UNIX或AF_INET。

    这通常被排除在外,否则将达到零。

Socket Methods

在本节中,我们将了解不同的袖珍方法。 三种不同的袖珍方法描述如下:

    Server Socket Methods

    Cpent Socket Methods

    General Socket Methods

Server Socket Methods

在客户服务器结构中,有一个中央服务器提供服务,许多客户从该中央服务器获得服务。 客户也向服务器提出请求。 这一结构中一些重要的服务器袖珍方法如下:

    socket.bind() - 这种方法将地址(东道名称、港口号码)与袖珍连接起来。

    socketen(>- 这种方法基本上聆听了对议事日程的链接。 它首先听取方意见。 Back是这种方法的一个论点,它具体规定了被点连接的最大数目。 其最低价值为0,最高价值为5。

    socket.accept() - 这将接受结核病患者的联系。 奶粉(conn, Address)是这种方法的回报率。 这里,一个用于发送和接收有关连接和地址的数据的新袖珍物体是必须上表的地址。 在使用这种方法之前,必须使用袖珍(Bbind)和袖珍(psten)方法。

Cpent Socket Methods

客户服务器结构的客户要求服务器并从服务器接收服务。 为此,只有一种专用于客户的方法。

    www.un.org/Depts/DGACM/index_french.htm - 这种方法积极连接服务器,或者简单地说,这种方法将客户与服务器连接起来。 论点地址是服务器的地址。

General Socket Methods

除了客户和服务器的袖珍方法外,还有一些通用的袖珍方法,在编审中非常有用。 一般袖珍方法如下:

    socket.recv(bufsize)- 如名称所示,这种方法从袖珍中接收了TCP信息。 论点的用法是缓冲面积,界定了这种方法可在任何时候得到的最大数据。

    send(bytes) 这种方法被用于向与遥远机器相连的袖珍发送数据。 中间商的争辩将给寄往书状的中间商数量。

    socket.recv from (data, Address) - 这种方法从图表中获取数据。 采用这种方法,将两种乳制品(数据、地址)价值退回。 数据界定了收到的数据,并具体述及了发送数据的袖珍地址。

    socket.sendto(data, Address) 如名称所示,这一方法被用于从目录中发送数据。 采用这种方法,将两种乳制品(数据、地址)价值退回。 数据界定了寄送的tes的数量,并具体指明了遥远机器的地址。

    socket.close() - 这种方法将结束袖珍。

    socket,gethostname()- 这种方法将归还东道国的名称。

    sendall(数据) 这种方法将所有数据发送到与遥远机器相连的袖珍。 它将无情地转移数据,直到出现错误,如果发生错误,则使用记名。 关闭表层的方法。

Program to estabpsh a connection between server & cpent

为了在服务器和客户之间建立联系,我们需要撰写两个不同的“灰色”方案,一个是服务器,另一个是客户。

Server-side program

在这一服务器边列车方案中,我们将使用socket.bind()方法,使其与具体的IP地址和港口连接起来,以便它能够聆听有关该IP和港口的新要求。 后来,我们采用socketen()方法,使服务器进入听力模式。 编号为4,作为socket.psten(>)方法的论据,这意味着如果服务器忙 bus,如果第5卷车试图连接,则有4条连接被拒。 我们将使用.send()方法向客户发出信息。 为此,我们分别使用socket.accept()和socket.close()方法启动和关闭连接。 下面是服务器辅助方案。

import socket
def Main():
   host = socket.gethostname()
   port = 12345
   serversocket = socket.socket()
   serversocket.bind((host,port))
   serversocket.psten(1)
   print( socket is pstening )
   
   while True:
      conn,addr = serversocket.accept()
      print("Got connection from %s" % str(addr))
      msg =  Connecting Estabpshed + "
"
      conn.send(msg.encode( ascii ))
      conn.close()
if __name__ ==  __main__ :
   Main()

Cpent-side program

在客户边的计票方案中,我们需要做一个标语。 然后,我们将与我们的服务器运行的港口连接——我们就是这样说的12345。 之后,我们将利用socket.pnk()方法建立联系。 然后使用socket.recv()方法,客户将从服务器收到电文。 最后,socket.close()。 方法将关闭客户。

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

host = socket.gethostname()
port = 12345

s.connect((host, port))
msg = s.recv(1024)

s.close()
print (msg.decode( ascii ))

现在,在管理服务器边方案之后,我们将在终端站获得以下产出:

socket is pstening
Got connection from ( 192.168.43.75 , 49904)

在管理客户方方案之后,我们将在其他终端站获得以下产出:

Connection Estabpshed

Handpng network socket exceptions

有两个区块,即try,但除外,可用于处理网络备案例外。 下面是处理例外情况的印章:

import socket
host = "192.168.43.75"
port = 12345
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

try:
   s.bind((host,port))
   s.settimeout(3)
   data, addr = s.recvfrom(1024)
   print ("recevied from ",addr)
   print ("obtained ", data)
   s.close()
except socket.timeout :
   print ("No connection between cpent and server")
   s.close()

Output

上述方案产生以下产出:

No connection between cpent and server

在上述文字中,我们首先提出了一份标书。 随后提供了我们的服务器运行的东道IP地址和港口号码——我们就是1245个例子。 后来,使用socket.bind()方法,在试验组内使用,我们将试图约束IP地址和港口。 我们正在使用socket.settimeout()方法确定客户的等候时间,例如,我们正在设定3秒。 除栏外,如果服务器和客户之间无法建立链接,则将打印电文。

Advertisements