socket本地绑定一个端口与另一个IP、端口发起连接是什么意思,用TClientSocket如何实现。
先解释概念性的东西。 1、何为网络socket——如果有两个不同机器上的进程需要通话(譬如RPC调用,文件传输),那么它们之间就需要建立一个网络连接。该连接的两端就是socket。你可以这么理解:socket是进程之间用来对话的中间层工具。2、本地绑定一个端口——如前所述,socket是一个中间层工具,它存在于操作系统的内核。电脑上的进程为了真正通过socket来发送/接受数据,socket必须和一个能够进行数据传送的接口连接起来,再通过那个接口送出数据。这个接口就是端口,而这个连接的过程就叫做绑定。3、与另一个IP、端口发起连接——既然socket可以介于两个不同的机器的进程之间,那么它当然需要连接另一台机器上的进程。它需要通过IP地址和端口号来识别对方的机器和进程。再说TClientSocket:这个类是专门用来描述TCP客户端的socket的。建立socket:这个不用说吧?绑定本地端口:用bind()函数——bind(Socket->SocketHandle, Addr, sizeof(Addr)),Addr的类型是TSockAddrIn * 与另一个IP和端口发起连接:socket->Address和socket->Port赋值成远程IP地址和端口号,调用socket->Open()
多谷歌
先去看tcpip协议就知道了

VB 如何用:socket 发送数据
1、首先看控件区有无串口控件,表明串口控件并未被启用,选择工程→部件→Micosoft comm Control6.0选项,点击应用,即可添加串口控件。2、绘制两个text控件用于存储串口需要收发的数据。一个button控件用于发送指令,添加串口控件。3、编写程序: Private Sub Command1_Click() MSComm1.Output = Text2.Text ‘发送数据End Sub Private Sub Form_Load()。4、串口数据的收发都正常。
在VB6中利用Winsock实现数据的发送和接收。下面的代码实现了两个程序:发送端程序和接收端程序,这两个程序实现以下功能:Socket通信采用UDP协议发送端程序向接收端程序发送字符串数据接收端接收到数据后在窗口显示数据一、接收端程序(1)新建一个VB6工程(2)添加Winsock控件。工具箱单击鼠标右键调出菜单:部件-->控件-->Winsock(3)在Form1上布置一个TextBox和一个Winsock控件(4)Form1窗体代码Option ExplicitPrivate Sub Form_Load() '初始化Socket With Winsock1 '采用UDP协议 .Protocol =sckUDPProtocol '本机端口 .LocalPort = 8000 '打开Socket .Bind End With Text1.Text = "" Me.Caption = "UDP接收端程序"End SubPrivate Sub Form_Unload(Cancel As Integer) '关闭窗口时先关闭socket Winsock1.CloseEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '接收数据 Dim strData As String Winsock1.GetData strData, vbString '将接收的显示在textBox1 Text1.Text = Text1.Text + strData + vbCrLfEnd Sub二、发送端程序(1)新建一个VB6工程(2)添加Winsock控件(3)在Form1上布置一个TextBox,一个Winsock和一个Command(4)Form1窗体代码Option ExplicitPrivate Sub Command1_Click() '发送 Winsock1.SendData Text1.TextEnd SubPrivate Sub Form_Load() With Winsock1 ' 采用UDP协议 .Protocol = sckUDPProtocol '192.168.216.128是接收端程序所在计算机的IP地址 .RemoteHost = "192.168.216.128" '接收端程序所使用的端口 .RemotePort = 8000 '打开Socket .Bind End With Text1.Text = "" Command1.Caption = "发送" Me.Caption = "UDP发送端程序"End SubPrivate Sub Form_Unload(Cancel As Integer) '窗口关闭时,先关闭Winsock1 Winsock1.CloseEnd Sub三、运行结果启动UDP接收端程序启动UDP发送端程序发送数据接收数据
用VB5 Winsock控件创建TCP/IP通讯程序 随着Windows 95中文版和Windows NT Server 4.0中文版的流行, Microsoft公司推出了相应平台上的开发软件: Visual Basic 5.0 中文企业 版。它为Windows环境下的网络开发提供了强大的工具,Winsock控件就是其中之一。Winsock控件建立在TCP、UDP协议的基础上,完成与远程计算机的通信。即使对TCP/IP不太熟悉的用户,使用该控件也可以在十几分钟内创建一个简单的客户机/服务器程序。下面我们对Winsock控件的事件、方法、属性按其在程序中出现的顺序分别作详细的介绍,以便更好地理解程序源代码。服务器程序的实现过程是:(1)服务器程序必须设置好LocalPort属性,作为侦听端口,该值为一个整数(只要是一个其它TCP/IP应用程序没有使用过的值即可)。(2)使用Listen方法进入侦听状态,等待客户机程序的连接请求。(3)客户机程序发出连接请求,使服务器程序产生ConnectionRequest事件,该事件得到一个参数requestID。(4)服务器程序用Accept方法接受客户机程序的requestID请求。这样,服务器程序就可以用SendData方法发送数据了。Accept方法必须用上一步得到的requestID作为其参数。(5)当服务器程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。(6)如果接受到Close事件,则用Close方法关闭TCP/IP连接。客户机程序的实现过程是:(1) 客户程序设置Remotehost属性,以便指定运行服务器程序的主机 名,该字符串可在“控制面板|网络|标识|计算机名”中查到。(2) 设置RemotePort属性,以便指定服务器程序的侦听端口。(3)使用Connect方法,向服务器提出连接请求。(4)服务器接受客户机程序的请求,客户机程序产生Connect事件,就可以用SendData方法发送数据了。(5)当客户机程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。(6)如果接受到Close事件,则用Close方法关闭连接。Winsock控件还有两个重要的属性,即Protocol和State。Protocol设定使用的协议是TCP还是UDP:取值sckTCPProtocol表示TCP, 取值sckUDPProtocol则表示UDP。因为Winsock控件的缺省设置是sckTCPProtocol,所以程序中并没有使用Protocol属性。State属性反映的是当前TCP/IP的连接状态,取值如表1所示。表1 Winsock控件的State属性及其描述常数值 描述sckClosed0 缺省值,关闭。SckOpen 1打开。SckListening 2 侦听sckConnectionPending 3 连接挂起sckResolvingHost 4 识别主机。sckHostResolved 5 已识别主机sckConnecting 6 正在连接。sckConnected 7 已连接。sckClosing 8 同级人员正在关闭连接。sckError9 错误。先在一台计算机上运行服务器程序,此时窗口上只有一个“退出”按钮。 再在另一台计算机上运行客户机程序,在“连接”按钮右边的文本框中输入服务器 的主机名后单击“连接”按钮。如果连接成功,则服务器和客户机程序窗口都会出现两个文本框。这时,两端都可以在上面的文本框中输入文字,这些文字会立即在下面的文本框中出现。服务器程序使用的控件如下:(1)Command1:退出按钮;(2)textsend:发送数据文本框;(3)Winsockserver: 服务器Winsock;(4)textget :接收数据文本框。服务器程序的界面如图所示。服务器程序的源代码如下:Private Sub Command1_Click()EndEnd SubPrivate Sub Form_Load()textsend.Visible = Falsetextget.Visible = FalseWinsockserver.LocalPort = 1001Winsockserver.ListenEnd SubPrivate Sub textsend_Change()Winsockserver.SendData textsend.TextEnd SubPrivate Sub Winsockserver_Close()Winsockserver.CloseEndEnd SubPrivate Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)textsend.Visible = Truetextget.Visible = TrueIf Winsockserver.State <> sckClosed Then Winsockserver.CloseWinsockserver.Accept requestIDEnd SubPrivate Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)Dim tmpstr As StringWinsockserver.GetData tmpstrtextget.Text = tmpstrEnd Sub客户机程序使用的控件如下:(1)Command1:退出按钮;(2)Command2:连接按钮;(3)Winsockclient:客户Winsock;(4)Text1:主机名文本框;(5)Textsend:发送数据文本框;(6)Textget:接收数据文本框; 客户机程序的界面如图所示。客户机程序的源代码如下:Private Sub Command1_Click()EndEnd SubPrivate Sub Command2_Click()Winsockclient.ConnectEnd SubPrivate Sub Form_Load()textsend.Visible = Falsetextget.Visible = FalseWinsockclient.RemotePort = 1001Winsockclient.RemoteHost = "sccdsz"End SubPrivate Sub Text1_Change()Winsockclient.RemoteHost = Text1.TextEnd SubPrivate Sub textsend_Change()Winsockclient.SendData textsend.TextEnd SubPrivate Sub Winsockclient_Close()Winsockclient.CloseEndEnd SubPrivate Sub winsockclient_Connect()textsend.Visible = Truetextget.Visible = TrueCommand2.Visible = FalseEnd SubPrivate Sub winsockclient_DataArrival(ByVal bytesTotal As Long)Dim tmpstr As StringWinsockclient.GetData tmpstrtextget.Text = tmpstr End Sub

socket发送 arrayList类型数据
需要自定义消息格式,告诉client怎么样把这个消息解析成数组 但是也有捷径, 比如你可以把这个Arraylist直接封装成一个XML文本,或者JSON文本。发到客户端,然后客户端再将XML反解成ArrayList对象即可。如果你对XML编程不熟,最简单的,就是上网搜XML第三方开源工具,引入到你的工程中, 直接用此工具,将对象转XML文本,客户端也一样用此工具将XML文本转对象。 搞定。

java中的socket是什么意思?
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。重要的Socket API:java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。. Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。2ServerSocket类例子编辑package com.lanber.socket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ServerDemo {/*** 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,* 而后才可以向客户端发送信息,否则将会有运行时出错。* @param args*/public static void main(String[] args) {ServerSocket ss = null;try {ss = new ServerSocket(8888);//服务器接收到客户端的数据后,创建与此客户端对话的SocketSocket socket = ss.accept();//用于向客户端发送数据的输出流DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//用于接收客户端发来的数据的输入流DataInputStream dis = new DataInputStream(socket.getInputStream());System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());//服务器向客户端发送连接成功确认信息dos.writeUTF("接受连接请求,连接成功!");//不需要继续使用此连接时,关闭连接socket.close();ss.close();} catch (IOException e) {e.printStackTrace();}}}3客户端的例子编辑package com.lanber.socket;importjava.io.DataInputStream;import java.io.DataOutputStream;importjava.io.IOException;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class ClientDemo {/*** @param args*/public static void main(String[] args) {Socket socket = null;try {socket = new Socket("localhost",8888);//获取输出流,用于客户端向服务器端发送数据DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//获取输入流,用于接收服务器端发送来的数据DataInputStream dis = new DataInputStream(socket.getInputStream());//客户端向服务器端发送数据dos.writeUTF("我是客户端,请求连接!");//打印出从服务器端接收到的数据System.out.println(dis.readUTF());//不需要继续使用此连接时,记得关闭哦socket.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} }
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。-----J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。给你一个例子:服务端例子:import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ServerDemo {/*** 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,* 而后才可以向客户端发送信息,否则将会有运行时出错。* @param args*/public static void main(String[] args) {ServerSocket ss = null;try {ss = new ServerSocket(8888);//服务器接收到客户端的数据后,创建与此客户端对话的SocketSocket socket = ss.accept();//用于向客户端发送数据的输出流DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//用于接收客户端发来的数据的输入流DataInputStream dis = new DataInputStream(socket.getInputStream());System.out.println("服务器接收到客户端的连接请求:" + dis.readUTF());//服务器向客户端发送连接成功确认信息dos.writeUTF("接受连接请求,连接成功!");//不需要继续使用此连接时,关闭连接socket.close();ss.close();} catch (IOException e) {e.printStackTrace();}}}客户端例子:importjava.io.DataInputStream; import java.io.DataOutputStream; importjava.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException;public class ClientDemo {/** * @param args */ public static void main(String[] args) { Socket socket = null; try { socket = new Socket("localhost",8888); //获取输出流,用于客户端向服务器端发送数据 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); //获取输入流,用于接收服务器端发送来的数据 DataInputStream dis = new DataInputStream(socket.getInputStream()); //客户端向服务器端发送数据 dos.writeUTF("我是客户端,请求连接!"); //打印出从服务器端接收到的数据 System.out.println(dis.readUTF()); //不需要继续使用此连接时,记得关闭哦 socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
简单来说客户端,与服务器端ServerSocket 配套使用,两者可以进行会话交谈。常用于制作聊天室(聊天工具)。
通信方面使用较多,
网络套接字,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

什么是Socket?
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。Socket的英文原义是"孔"或"插座"。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
socket的原意是“插座”,在计算机通信领域,socket被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。 通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而socket 就是用来连接到因特网的工具。

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/81603.html。