客戶端簡單代碼:
成都創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網站建設公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十年時間我們累計服務了上千家以及全國政企客戶,如成都玻璃鋼雕塑等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質量監(jiān)控加上過硬的技術實力獲得客戶的一致贊譽。
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
整個過程都有了
1.一般來說,要實現前后端分離,前端就需要開啟一個本地的服務器來運行自己的前端代碼,以此來模擬真實的線上環(huán)境,并且,也是為了更好的開發(fā)。因為你在實際開發(fā)中,你不可能要求每一個前端都去搭建一個java(php)環(huán)境,并且在java環(huán)境下開發(fā),這對于前端來說,學習成本太高了。
?2.但如果本地沒有開啟服務器的話,不僅無法模擬線上的環(huán)境,而且還面臨到了跨域的問題,因為你如果寫靜態(tài)的html頁面,直接在文件目錄下打開的話,你是無法發(fā)出ajax請求的(瀏覽器跨域的限制),因此,你需要在本地運行一個服務器,可是又不想搭建陌生而龐大的java環(huán)境,怎么辦法呢?nodejs正好解決了這個問題。在我們項目中,我們利用nodejs的express框架來開啟一個本地的服務器,然后利用nodejs的一個http-proxy-middleware插件將客戶端發(fā)往nodejs的請求轉發(fā)給真正的服務器,讓nodejs作為一個中間層。這樣,前端就可以無憂無慮的開發(fā)了
?3.由于前后端分離后,前端和后臺同時開發(fā)時,就可能遇到前端已經開發(fā)好一個頁面了,可是卻等待后臺API接口的情況。比如說A是負責前端,B是負責后臺,A可能用了一周做好了基本的結構,并且需要API接口聯(lián)調后,才能繼續(xù)開發(fā),
?4.而此時B卻還沒有實現好所需要的接口,這種情況,怎么辦呢?在我們這個項目里,我們是通過了mock來提供一些假數據,我們先規(guī)定好了API接口,設計出了一套API文檔,然后我們就可以通過API文檔,利用mock來返回一些假數據,這樣就可以模擬發(fā)送API到接受響應的整一個過程,
?5.因此前端也不需要依賴于后端開發(fā)了,可以獨立開發(fā),等到后臺的API全部設計完之后,就可以比較快速的聯(lián)調。
服務端做數據的儲存/處理工作。
試想下用戶他的游戲等級是12級,
如果你不儲存在服務端而儲存在客戶端,用戶就可以像修改單機游戲一樣直接改成120級那不是亂套了。
服務端用戶觸碰不到服務端處理用戶升級或降級并記錄在數據庫中,用戶不可修改。
需要出口設備進行映射內部地址;或使用打洞技術穿透NAT,但使用TCP打洞非常困難。
參考
穿透NAT是非常困難的,因為NAT的過程中在出口路由器上的Port已經不是你定義的iPort了,具體是多少也不固定
文章題目:vb.net服務端 vbnet webservice
文章鏈接:http://www.chinadenli.net/article28/dddsjcp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供電子商務、網頁設計公司、品牌網站設計、品牌網站建設、響應式網站、微信小程序
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)