什么是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 就是用来连接到因特网的工具。

我用TCP的socket做了聊天工具(类似QQ),请教用户之间传文件用什么做
建tcp协议的socket,用内存映射技术,把大文件分割成块,发送到对方,对方组合成原文件。做得好的话,传输速度可以达到物理网卡的极限。源代码你可以参考飞鸽传书,不过它那个有点复杂,也没有使用内存映射。
和Socket 传输 点对点

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

java socket 写个全双工异步长连接工具类,用来向银行发送和接收报文,哪位大神能写出来,定重谢
双工?就是读写分开线程。。。。。。。。。。。如果连接被关闭,就重新打开连接

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

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