发送端:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21FileStream fs = new FileStream(@"7.jpg", FileMode.Open); private void SendImage() { //实例化socket Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 56799); socket.Connect(ipep); long contentLength = fs.Length; //第一次发送数据包的大小 socket.Send(BitConverter.GetBytes(contentLength)); while (true) { //每次发送128字节 byte[] bits = new byte[128]; int r = fs.Read(bits, 0, bits.Length); if (r <= 0) break; socket.Send(bits, r, SocketFlags.None); } socket.Close(); fs.Position = 0; }
接收端:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49private void RecviveImage() { new Thread(delegate () { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 56799); socket.Bind(ipep); socket.Listen(2); while (true) { try { byte[] data = new byte[8]; Socket clientSocket = socket.Accept(); if (clientSocket.Connected) { clientSocket.Receive(data, data.Length, SocketFlags.None); long contentLength = BitConverter.ToInt64(data, 0); int size = 0; MemoryStream ms = new MemoryStream(); while (size < contentLength) { byte[] bits = new byte[128]; int r = clientSocket.Receive(bits, bits.Length, SocketFlags.None); if (r <= 0) break; ms.Write(bits, 0, r); size += r; } Image img = Image.FromStream(ms); this.Invoke((EventHandler) delegate { pictureBox1.Image = img; //更新在窗体控件上 }); clientSocket.Close(); ms.Flush(); ms.Close(); ms.Dispose(); } } catch { } } }) { IsBackground = true }.Start(); }
最后
以上就是平淡短靴最近收集整理的关于C# Socket TCP发送图片与接收图片的全部内容,更多相关C#内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复