祝大家新年发财---问个问题--socket发送结构,接受以后读取的问题

caoqinghua 2005-12-31 11:13:31

定义变量

Private th As Thread
Private tcpl As TcpListener
Private listenerRun As Boolean = True

定义结构

Public Structure Content
Public username As String
Public passworld As String
Public image_1 As System.Drawing.Image
End Structure

发送函数代码:

Private Sub Send()
Try
Dim msg_1 As Content
msg_1.username = "username "
msg_1.passworld = "passworld "
msg_1.image_1 = Me.PictureBox1.Image
Dim tcpc As New TcpClient(textBox1.Text, 9999)
Dim tcpStream As NetworkStream = tcpc.GetStream()
Dim reqStreamW As New StreamWriter(tcpStream)
reqStreamW.Write(msg_1.username)
reqStreamW.Write(msg_1.passworld)
reqStreamW.Write(msg_1.image_1)
reqStreamW.Flush()
tcpStream.Close()
tcpc.Close()
Catch ex As Exception
ToolStripStatusLabel1.Text = "目标计算机拒绝连接请求!"
MessageBox.Show(ex.Message)
End Try
End Sub

接收函数代码:

Private Sub Listen()
Try
tcpl = New System.Net.Sockets.TcpListener(5656)
tcpl.Start()
ToolStripStatusLabel1.Text = "正在监听..."
While listenerRun
Dim s As Socket = tcpl.AcceptSocket()
Dim stream(1024) As Byte
Dim i As Integer = s.Receive(stream)
MessageBox.Show(i.ToString)
Dim ddd As New Content
ddd.username = System.Text.Encoding.UTF8.GetString(stream, 0, 10)
ddd.passworld = System.Text.Encoding.UTF8.GetString(stream, 10, 10)
MessageBox.Show(ddd.username + ddd.passworld)
'怎么把传过来的结构中的图片读出来?
'
End While
Catch ex As System.Security.SecurityException
MessageBox.Show("防火墙安全错误", "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Catch ex As Exception
ToolStripStatusLabel1.Text = "已停止监听" + ex.Message.ToString
MessageBox.Show(ex.Message)
End Try
End Sub

问题:
怎么把传过来的结构中的图片读出来?


====================================附件======================================
紧急公告:
  一股来自西伯利亚的强冷空气即将影响我国,本周内我大部分地区将出现低温降水天气,请广大朋友做好御寒保暖工作,有老婆的抱老婆,有老公的抱老公。暂时没有老婆(或老公)的请抱暖水壶,请勿乱抱动物,以防患禽流感。
  祝圆蛋快乐!

...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxfchinacq 2006-01-06
  • 打赏
  • 举报
回复
.NET SDK里面有SOCKET的介绍
HAVENT 2006-01-06
  • 打赏
  • 举报
回复
Remoting没Socket基础,标记一下学习~~~顺便问问哪里有实用、清晰的.NET Socket教程或源码参考,谢谢~~~
yxfchinacq 2006-01-06
  • 打赏
  • 举报
回复
你可以用下面的方法试试一下:
把你的结构改成CLASS,并且让它可以序列化
<Serializable()>CLASS CONTENT
PUBLIC USERNAME AS STRING
PUBLIC PASSWORD AS STRING
PUBLIC IMG AS INMAGE
END CLASS
然后得到这个对象的二进制流,把这个流发送到对方
SUB SEND()
DIM T AS NEW CONTENT
Dim S As New IO.MemoryStream
Dim BF As New BinaryFormatter
BF.Serialize(S, T)
S.Position = 0
'发送二进制流S
END SUB
对方接收后把这个流转变为对象
SUB RECIEVE()
DIM T AS NEW CONTENT
T = CType(BF.Deserialize(S), taskInfo) 'S为你在网络上接受的流
T.IMG就应该是你需要的图象了
END SUB
caoqinghua 2006-01-05
  • 打赏
  • 举报
回复
顶顶
caoqinghua 2005-12-31
  • 打赏
  • 举报
回复
vb版的高手,出来吧。分数不够再加
caoqinghua 2005-12-31
  • 打赏
  • 举报
回复
3楼的朋友,你这个方法可以发送和接收,我的意思是把结构中的图片取出来,并不是单单发送一个文件。谢谢你的回答
LGame 2005-12-31
  • 打赏
  • 举报
回复
帮你顶
Sunny21 2005-12-31
  • 打赏
  • 举报
回复
dim fs as filestream
dim bw as binarywriter
fs=new filestrema("c:\temp.bmp",filemode.create)
bw=new binarywriter(fs)
bw.write(stream,20,i-20)
bw.close
fs.close
picturebox1.image=new bitmap("c:\temp.bmp")

16,555

社区成员

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

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