求socket的使用实例

sotwind 2010-08-10 12:31:07
我第一次接触socket 所以想找些实例看 百度了挺长时间 感觉不太适合我学习

我的需求是

需要服务器端放一个程序 用来接收客户端发送的消息

客户端发出请求后 服务器接收到请求并去操作数据库,将得到的结果用socket返回给客户端

客户端接收返回的数据并将其显示到窗体中

<
也就是说 客户端需要发送数据,并且需要得到发送数据后返回的结果, 服务器端需要接收数据并且发送该数据处理后的结果
服务器端只有一个 客户端可以有多个
>

(
因为是pda不能直接操作远程数据库所以想用socket通讯方式解决,数据库是sql server,关于数据库这一块我自己能解决
我需要消息发送接收并返回消息这样的实例,垦请先行者们提携
)
...全文
2173 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
cleveryixiu 2013-04-14
  • 打赏
  • 举报
回复
努力学习中,希望有帮助。。
乱世狂刀 2010-09-02
  • 打赏
  • 举报
回复
我也转做socket编程了
rember0087 2010-08-23
  • 打赏
  • 举报
回复
看到的都是20#的贴子
ineedchrist 2010-08-15
  • 打赏
  • 举报
回复
你可以加我QQ:303147952,好像这两天这个论坛有点问题,我回复的总不显示。
sotwind 2010-08-10
  • 打赏
  • 举报
回复
这个一定的 我结贴率是 100%的

不过 您的代码复制进来有错误

这个 您似乎在线 我加您QQ指导一下?
ineedchrist 2010-08-10
  • 打赏
  • 举报
回复
学习之余,有空结下帖!
sotwind 2010-08-10
  • 打赏
  • 举报
回复
嗯 刚仔细的看了一下您的代码 发现博大精深 正在学习中

当然所谓的学习 就是 复制 粘贴 :)
ineedchrist 2010-08-10
  • 打赏
  • 举报
回复
哈哈 ,分不是重要的,关键你学不学得会是主要的,TCP的东西很深,你写的和MSDN上的例子太过简单。
不深入进去你感受不到精华。
sotwind 2010-08-10
  • 打赏
  • 举报
回复
呵呵 先谢过了
刚google到一贴不错的例程 正在研究 可惜是英文的稍有点头大

分呵 俺只能发100分的贴子 还有楼上的几位大大也要感谢一下 您就委屈点将就着平分一下吧 :)
ineedchrist 2010-08-10
  • 打赏
  • 举报
回复
我写的是异步的,已经封装好了的,你不明白的话,一步步跟踪,一会儿就理清了。
ineedchrist 2010-08-10
  • 打赏
  • 举报
回复
看我这个帖子吧,当年挣了120分,不知道你的100分给我多少!
http://topic.csdn.net/u/20081027/16/7dee1546-b4b4-494d-bb3e-2ef6244731d4.html
sotwind 2010-08-10
  • 打赏
  • 举报
回复
嗯? 顶一下?

我的问题就是 连接建立了 发送数据也成功了

然后 是直接用 s.receive()接收呢? 还是需要再开侦听? 应该怎么写?

因为我没有系统的学过 socket 所学的知识都是网上一点点拼凑起来的 所以在这里在麻烦大家尽量贴出源码 谢谢了
sotwind 2010-08-10
  • 打赏
  • 举报
回复

Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Dim bytes(1024) As Byte
Dim localEndPoint As New IPEndPoint(IPAddress.Parse("192.168.1.6"), 1024)
s.Connect(localEndPoint)
s.Send(Encoding.Unicode.GetBytes("ListUser"))
'==================以上发送都成功了================
s.Receive(bytes)
MessageBox.Show(Encoding.Unicode.GetString(bytes, 0, 1024))
'=================然后客户端怎么接收发送的服务器端处理过的数据呢? 以上两步不成功
s.Close()
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
myhope88 2010-08-10
  • 打赏
  • 举报
回复
楼上讲得挺详细了
sotwind 2010-08-10
  • 打赏
  • 举报
回复

Imports System.Net.Sockets
Imports System.Net
Imports System.Text
Imports System.Threading

Public Class frmServer
Dim s As Socket = Nothing
Dim t As Thread

Public Sub WaitData()
s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) '使用TCP协议
Dim localEndPoint As New IPEndPoint(IPAddress.Parse("192.168.1.6"), 1024) '指定IP和Port
s.Bind(localEndPoint) '绑定到该Socket
s.Listen(100) '侦听,最多接受100个连接
While (True)
Dim bytes(1024) As Byte '用来存储接收到的字节
Dim ss As Socket = s.Accept() '若接收到,则创建一个新的Socket与之连接
ss.Receive(bytes) '接收数据,若用ss.send(Byte()),则发送数据

Dim Str = Encoding.Unicode.GetString(bytes)
lstMessage.Items.Insert(0, Str) '将其插入到列表框的第一项之前
Select Case Str
Case "ListUser"
Str = "ListUserOK"
End Select

bytes = Encoding.Unicode.GetBytes(Str)
ss.Send(bytes)
ss.Close() '=============这里需要用Close关闭吗?
'可能我问的问题比较初级呵呵... 下一个问题是客户端应该怎么接收?
End While
End Sub

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
t = New Thread(AddressOf WaitData) '建立新的线程
t.Start() '启动线程
btnStart.Enabled = False
End Sub

Private Sub btnEnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnd.Click
Try
s.Close() '关闭Socket
t.Abort() '中止线程
Catch
Finally
btnStart.Enabled = True '启用BtnStart
End Try
End Sub

Private Sub frmServer_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Try
s.Close()
t.Abort()
Catch
End Try
End Sub
End Class
兔子-顾问 2010-08-10
  • 打赏
  • 举报
回复
ss.Send
sotwind 2010-08-10
  • 打赏
  • 举报
回复
我还是贴出代码问吧 问题1 代码出下

Dim s As Socket = Nothing
Dim t As Thread

Public Sub WaitData()
s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) '使用TCP协议
Dim localEndPoint As New IPEndPoint(IPAddress.Parse("192.168.1.6"), 1024) '指定IP和Port
s.Bind(localEndPoint) '绑定到该Socket
s.Listen(100) '侦听,最多接受100个连接
While (True)
Dim bytes(1024) As Byte '用来存储接收到的字节
Dim ss As Socket = s.Accept() '若接收到,则创建一个新的Socket与之连接
ss.Receive(bytes) '接收数据
Dim Str=Encoding.Unicode.GetString(bytes)

'=========================================
'处理数据
Str="XXX|XXX"
'请问然后怎么将处理过后的数据发回给客户端
'=========================================

End While
End Sub
oo渣渣oo 2010-08-10
  • 打赏
  • 举报
回复
你好好研究一下MSDN中的内容吧.
只需要搞清楚TcpListener,Socket两个类就好
a124819202 2010-08-10
  • 打赏
  • 举报
回复
我弄的总是有问题!。。。。 不懂vb
加载更多回复(1)

16,554

社区成员

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

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