tcp
創新互聯主打移動網站、網站建設、網站制作、網站改版、網絡推廣、網站維護、主機域名、等互聯網信息服務,為各行業提供服務。在技術實力的保障下,我們為客戶承諾穩定,放心的服務,根據網站的內容與功能再決定采用什么樣的設計。最后,要實現符合網站需求的內容、功能與設計,我們還會規劃穩定安全的技術方案做保障。
還是
udp?
tcp
的話
try
-
catch
就行了,因為
tcp
要求的是穩定的連接,連接一斷開直接就
throw
exception
了。
udp
的話,因為它本身是無連接的協議,所以其實不存在斷開不斷開的,準確的說應該是超時??梢钥蛻舳嗣扛粢欢螘r間向服務端發送個心跳包(隨便什么數據都行,只是證明客戶端還在線),服務端每隔一段時間檢測在線的客戶端列表,誰已經很久沒發來心跳包了就證明它掉線了。
1.一般來說,要實現前后端分離,前端就需要開啟一個本地的服務器來運行自己的前端代碼,以此來模擬真實的線上環境,并且,也是為了更好的開發。因為你在實際開發中,你不可能要求每一個前端都去搭建一個java(php)環境,并且在java環境下開發,這對于前端來說,學習成本太高了。
?2.但如果本地沒有開啟服務器的話,不僅無法模擬線上的環境,而且還面臨到了跨域的問題,因為你如果寫靜態的html頁面,直接在文件目錄下打開的話,你是無法發出ajax請求的(瀏覽器跨域的限制),因此,你需要在本地運行一個服務器,可是又不想搭建陌生而龐大的java環境,怎么辦法呢?nodejs正好解決了這個問題。在我們項目中,我們利用nodejs的express框架來開啟一個本地的服務器,然后利用nodejs的一個http-proxy-middleware插件將客戶端發往nodejs的請求轉發給真正的服務器,讓nodejs作為一個中間層。這樣,前端就可以無憂無慮的開發了
?3.由于前后端分離后,前端和后臺同時開發時,就可能遇到前端已經開發好一個頁面了,可是卻等待后臺API接口的情況。比如說A是負責前端,B是負責后臺,A可能用了一周做好了基本的結構,并且需要API接口聯調后,才能繼續開發,
?4.而此時B卻還沒有實現好所需要的接口,這種情況,怎么辦呢?在我們這個項目里,我們是通過了mock來提供一些假數據,我們先規定好了API接口,設計出了一套API文檔,然后我們就可以通過API文檔,利用mock來返回一些假數據,這樣就可以模擬發送API到接受響應的整一個過程,
?5.因此前端也不需要依賴于后端開發了,可以獨立開發,等到后臺的API全部設計完之后,就可以比較快速的聯調。
服務端做數據的儲存/處理工作。
試想下用戶他的游戲等級是12級,
如果你不儲存在服務端而儲存在客戶端,用戶就可以像修改單機游戲一樣直接改成120級那不是亂套了。
服務端用戶觸碰不到服務端處理用戶升級或降級并記錄在數據庫中,用戶不可修改。
Socket類連接后 可以通過類中的 RemoteEndPoint 來獲取遠程IP和端口信息.
要注意的是.需要將它強制轉化為 IPEndPoint類型 然后通過 IPEndPoint.Address以及IPEndPoint.Port來獲取對應的IP及端口
例:
Dim REV_SCK As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
'這里創建一個UDP Socket連接的實例 TCP也是一樣的
'省略SOCKET連接的代碼 當SOCKET連接成功后 可以用下面的語句獲取遠程信息
Dim IP as string ,Port as integer
'定義IP和Port變量 用來保存地址及端口
IP = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Address.ToString())
Port = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Port)
接收到客戶端數據,處理完畢........
//返回信息給客戶端
string sendStr = "ok!Client send message successful!";
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
client.Send(bs, bs.Length, 0);
//關閉套接字
client.Close();
.............客戶端發送完數據等待服務端返回處理結果.............
/**/
///接受從服務器返回的信息
string recvStr = "";
byte[] recvBytes = new byte[1024];
int bytes;
bytes = client.Receive(recvBytes, recvBytes.Length, 0);//從服務器端接受返回信息
recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
label15.Text = DateTime.Now.ToString() + ":" + recvStr;//顯示服務器返回信息
///一定記著用完socket后要關閉
//關閉套接字
client.Close();
客戶端簡單代碼:
Imports System.Net.Sockets
Imports System.IO
Private Output As NetworkStream
Private Writer As BinaryWriter
Private Reader As BinaryReader
Dim StrSend As String
Dim client As New TcpClient '
client.Connect(servIP, 2006)
Output = client.GetStream
Writer = New BinaryWriter(Output)
Reader = New BinaryReader(Output)
StrSend = "字符串"
System.Threading.Thread.Sleep(100)
Writer.Write(StrSend)
Try
Message = Reader.ReadString
If Message = "OK" Then
LBinfo.Text = "成功!" '測試
Else
LBinfo.Text = "失敗!"
End If
System.Threading.Thread.Sleep(100)
Catch ex As Exception
MessageBox.Show("Client Application Closing!")
Finally
Writer.Close()
Reader.Close()
Output.Close()
client.Close()
End Try
服務器端
用線程
Imports System.Net.Sockets
Imports System.IO
Imports System.Threading
Imports System.Windows.Forms
Private Connection As Socket
Private readThread As Thread
Private SocketStream As NetworkStream
Private Writer As BinaryWriter
Private Reader As BinaryReader
Public Sub New()
MyBase.New()
'該調用是 Windows 窗體設計器所必需的。
InitializeComponent()
'在 InitializeComponent() 調用之后添加任何初始化
readThread = New Thread(AddressOf RunServer)
readThread.Start()
End Sub
Public Sub RunServer()
Dim Listener As TcpListener
Try
Listener = New TcpListener(Net.IPAddress.Parse("192.168.1.16"), 2006)
Listener.Start()
While True
Connection = Listener.AcceptSocket 'accept an incoming connection
SocketStream = New NetworkStream(Connection) 'create networkstream object associated with socket
Writer = New BinaryWriter(SocketStream) 'create object for transferring data across stream
Reader = New BinaryReader(SocketStream) 'read string data sent from client
Try
Do
strIncept = Reader.ReadString
strIncept = DataDisp(strIncept) '此處插入數據處理程序()
SendInfoToClient(strIncept) 'send to client
Loop While Connection.Connected
Catch ex As Exception
MsgBox(ex.ToString)
Finally
Writer.Close()
Reader.Close()
SocketStream.Close()
End Try
End While
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Public Sub SendInfoToClient(ByVal Info As String)
'Send to client
Try
If Connection.Connected Then
Writer.Write(Info)
Connection.Close()
End If
Catch ex As SocketException
MessageBox.Show(ex.ToString)
End Try
End Sub
整個過程都有了
文章名稱:vb.net服務端,VBNET下載
網頁URL:http://vcdvsql.cn/article20/hecsco.html
成都網站建設公司_創新互聯,為您提供手機網站建設、小程序開發、企業建站、虛擬主機、軟件開發、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯