我不知道socket究竟是什么意思。 服务器在特定计算机上运行,并且具有绑定到特定端口号的套接字。服务器只是等待,监听套接字以便客户端发出连接请求。 当服务器接受连接时,它会获得绑定到同一本地端口的新套接字,并将其远程端点设置为客户端的地址和端口。 它需要一个新的套接字,以便它可以继续监听原始套接字的连接请求,同时满足连接客户端的需求。
那么,socket是在内存中创建的一些类吗?对于每个客户端连接,都会在内存中创建此类的新实例?内部套接字写入本地端口和端口以及连接的客户端的IP号。有人能详细解释一下socket的定义吗?
由于
答案 0 :(得分:9)
套接字实际上是一种文件句柄,后面可以是网络会话。
您可以像其他任何文件句柄一样读取和写入它(大部分),并让数据来自会话的另一端。
您要描述的具体操作是针对套接字的服务器端。服务器建立(绑定)可用于接受传入连接的套接字。接受后,您将获得已建立会话的另一个套接字,以便服务器可以返回并侦听原始套接字以获取更多传入连接。
它们在内存中的表示方式因您的抽象级别而异。
在C的最低级别,它们只是文件描述符,一个小整数。但是,您可能有一个更高级别的Socket
类,它封装了低级套接字的行为。
答案 1 :(得分:1)
根据" C-C编程实用指南中的TCP / IP套接字"作者:Michael J. Doonahoo& Kenneth L. Calvert(Chptr 1,Section 1.4,Pg 7):
套接字是应用程序可以通过其发送的抽象 并且接收数据的方式与打开文件的方式非常相似,允许应用程序读取和写入稳定存储的数据。 套接字允许应用程序插入"插入"到网络和沟通 与其他应用程序也插入同一网络。 由一台机器上的应用程序写入套接字的信息可以是 由应用程序在另一台计算机上读取,反之亦然。
从程序员的角度来看,请参阅本书以清楚地了解套接字。
答案 2 :(得分:0)
网络套接字是网络上运行的两个程序之间的通信流中的一个端点。
套接字是IP地址和端口号的组合
这是在Internet的无连接上下文中来自服务器应用程序的套接字请求的典型顺序,在该上下文中,服务器处理许多客户端请求并且维持的连接时间不长于立即请求的服务时间:
实施步骤
在服务器端
initilize socket()
--
bind()
--
recvfrom()
--
(wait for a sendto request from some client)
--
(process the sendto request)
--
sendto (in reply to the request from the client...for example, send an HTML file)
套接字请求的相应客户端顺序为:
socket()
--
bind()
--
sendto()
--
recvfrom()
,以便您可以建立管道连接.. 更多http://www.steves-internet-guide.com/tcpip-ports-sockets
答案 3 :(得分:0)
套接字定义 可以通过关联完全指定在两个计算机系统上运行的两个进程之间的通信:{协议,本地地址,本地进程,远程地址,远程进程}我们也将半关联定义为{协议,本地-地址,本地进程}或{协议,远程地址,远程进程},它们指定了连接的一半。该半关联也称为套接字或传输地址。套接字一词已在Berkeley Unix网络系统中得到普及,它是“通信的终点”,对应于半关联的定义。