VB.NET Winform程序中,客户端与服务器端数据交互?

zhaohui1310 2010-11-16 10:59:36
VB.NET中。要实现多个客户端可以同时向服务器端发送数据,由服务器端和数据库进行交互,处理完成后,将结果返回客户端。要实现如上功能,请各位大侠们指点。最好给源码或例子看看!~ 含泪跪谢了!~~
...全文
561 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooOO林丹OOoo 2011-03-01
  • 打赏
  • 举报
回复
客户端简单代码:
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
SocketStream = New NetworkStream(Connection)
Writer = New BinaryWriter(SocketStream)
Reader = New BinaryReader(SocketStream)

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
整个过程都有了
ooOO林丹OOoo 2011-03-01
  • 打赏
  • 举报
回复
客户端简单代码:
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
整个过程都有了
QQRN 2010-11-18
  • 打赏
  • 举报
回复
建议楼主,先去学点基础的东西吧,第一个贴子就问这样的问题,就算告诉你步骤你也不会做。如果用socket做,估计给你弄个一两个月都搞不懂多线程下的socket。
最后,给个建议,如果保密性要求不高,直接用APS+sql做服务端,最多传送的数据全部加密,winform就当访问web就行了。
hztltgg 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhaohui1310 的回复:]
AntingZ
你说对了 我就是要实现那种效果,因为直接用客户端连接数据库,安全性比较低,而且速度比较慢!~
[/Quote]

安全性比较低是对的,速度比较忙就说反了吧,除非查询出来的数据经过应用服务器有压缩,不过这个和连接数据库没什么关系啊
jiningyin 2010-11-17
  • 打赏
  • 举报
回复
可以实现,用WebService就可以,你可以加QQ 25524991,我远程给你看看我做的系统
zhaohui1310 2010-11-17
  • 打赏
  • 举报
回复
AntingZ
你说对了 我就是要实现那种效果,因为直接用客户端连接数据库,安全性比较低,而且速度比较慢!~
足球中国 2010-11-16
  • 打赏
  • 举报
回复
这就是标准的CS结构。搜一下这个能找到很多的。
也可以自己写就是处理socket的东西。
ms自动一个这样库挺大的。w开头的。具体的东西在家里。
博客园也有专门人写了这样的一系列文章。他在文章最后就提到了很多的这样的平台。用过一个还不错。
你到博客园搜搜。
hztltgg 2010-11-16
  • 打赏
  • 举报
回复
你不觉得你的需求就是做一个网站么?浏览器给服务器发送网址,服务器查询数据库给浏览器发送要显示的数据。

你要用winform来做,那你就要实现一个服务器端的类似IIS的东西和客户端的类似浏览器的东西,具体怎么做,就看你要做到那层呢,底层做起可以从通讯协议做起,高层做起也可以直接利用iis做个webservice实现。
QQRN 2010-11-16
  • 打赏
  • 举报
回复
源码没有,例子有,你服务器装个SQL,然后客户端连接下SQL就是了。
AntingZ 2010-11-16
  • 打赏
  • 举报
回复
问题是比较抽象,我猜楼主不是想要C/S结构,直接连接数据库。
估计楼主是要一个应用程序服务器,所有的客户端和应用程序服务器通信,应用程序服务器访问后台数据库,而不是让客户端直接访问数据库。

用.NET里面,用Remoting,Web Service,WCF都可以,推荐用WCF,看一下MSDN
http://msdn.microsoft.com/zh-cn/library/ms734712.aspx
yao110119 2010-11-16
  • 打赏
  • 举报
回复
做成 C/S结构就可以了 。。 SQL 把1433端口开了
水猿兵团五哥 2010-11-16
  • 打赏
  • 举报
回复
他这个问题描述,说简单的话,就是一个sql数据查询也行
说复杂的话,网站之类也可

数据交换,太模糊了

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧