socket通信图(socket 传输图片)
本文目录
socket 传输图片
我想 Socket 通信方面你应该没问题吧。是不知道怎样打包图片?其实不是打包,而是转换为二进制流。得到一个字节数组。传递给服务器端。byte; // 假设你的图片是100K大小FileStream fs = new FileStream("图片路径");fs.Read(0,buffer,buffer.Length);OK 了,把这个 buffer 传过去。服务器收到就还原就可以了
socket通讯的示意图最好结合硬件连接的图示一起说明
话说直接谷歌socket...可以查到蛮多图的...
吗? 如果能,则把通信的端口改成80,以前的80停掉2 如果你在局域网,可能你的网关做了端口限制
求c#中利用socket连接客户端和服务器的框图及讲解
你说的比较模糊,利用socker连接 其实和tcp连接差不多,我可以发一下我以前的代码你参考下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.Threading;namespace test4_2{ public partial class Form1 : Form { Socket connectSocket; //Socket client; byte; delegate void listboxDel(string s); listboxDel listboxdel; public Form1() { InitializeComponent(); textBoxContent.Focus(); listboxdel = new listboxDel(listbox); //为连接指派线程 Thread threadConnect = new Thread(new ThreadStart(Connect)); threadConnect.Start(); } public void listbox(string str) { listBox1.Items.Add(str); listBox1.SelectedIndex = listBox1.Items.Count - 1; listBox1.ClearSelected(); }//连接方法 public void Connect() {try {//建立连接socket connectSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//开始异步连接 connectSocket.BeginConnect(IPAddress.Parse("172.16.94.152"), 82, new AsyncCallback(ConnectCallback), //定义回调函数代理 connectSocket); //传递给回调函数的状态 } catch (Exception e) { MessageBox.Show(e.Message); } }//连接方法的回调函数 private void ConnectCallback(IAsyncResult ar) { try { //从传递的状态中获取套接字,创建一个客户端套接字 Socket client = (Socket)ar.AsyncState;//完成挂起的连接操作 client.EndConnect(ar); listBox1.Invoke(listboxdel, "连接服务器成功,可以开始通话!"); client.BeginReceive(bytes, 0, 1000, 0, new AsyncCallback(receivecallback), client); } catch (Exception e) { Console.WriteLine(e.ToString()); } } public void receivecallback(IAsyncResult ar) { try { Socket client = (Socket)ar.AsyncState; int length = client.EndReceive(ar); listBox1.Invoke(listboxdel, Encoding.UTF8.GetString(bytes, 0, length)); client.BeginReceive(bytes, 0, 1000, 0, new AsyncCallback(receivecallback), client); } catch { }} //发送方法 private void Send(String data) { //使用ASCII转换字符串为字节序列 byte byteData = Encoding.UTF8.GetBytes(data); //将字符串转换成字节序列//开始向远端设备发送数据 connectSocket.BeginSend(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(SendCallback), connectSocket); }//发送方法的回调函数 private void SendCallback(IAsyncResult ar) { try { //从传递的状态中获取套接字,创建一个客户端套接字 Socket client = (Socket)ar.AsyncState;//结束异步数据传输操作,返回传输的字节数 int bytesSent = client.EndSend(ar); listBox1.Invoke(listboxdel, textBoxUser.Text +":"+ textBoxContent.Text); } catch (Exception e) { MessageBox.Show(e.ToString()); } }private void buttonSend_Click(object sender, EventArgs e) {Send(textBoxUser.Text+":"+textBoxContent.Text); } }}
java socket通信 如何构造下图的数据包
不是很明白你的问题,如果是想要那个数据的话,右边的字符串用getByte()得到的就是左边的数据。
更多文章:
nvidia geforce 410m(nvidia geforce 410M 是独显吗)
2024年7月28日 17:36