c# Socket发送与接收方法
来源:互联网 发布:java mac 绝对路径 编辑:程序博客网 时间:2024/05/21 19:27
客户端:
/// <summary> /// socket发送字节数组 /// </summary> /// <param name="sendData">要发送的byte[]</param> /// <param name="ip">服务器IP</param> /// <param name="port">服务器端口</param> /// <returns>接收的byte[]</returns> public static byte[] SendBySocket(byte[] sendData, string ip, int port) { byte[] byteReceive = null; try { IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse(ip), port); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(IPAddress.Parse(ip), port); socket.Send(sendData); int count, size = 512; byte[] data = new byte[size]; MemoryStream ms = new MemoryStream(); while (0 != (count = socket.Receive(data, size, SocketFlags.None))) ms.Write(data, 0, count); byteReceive = ms.ToArray(); ms.Close(); //方法2 //int bytes = 0; //MemoryStream ms = new MemoryStream(); //while (true) //{ // byte[] byteMessage = new byte[10]; // bytes = socket.Receive(byteMessage, byteMessage.Length, 0); // if (bytes <= 0) // break; // ms.Write(byteMessage, 0, bytes); //} //byteReceive = ms.ToArray(); //ms.Close(); socket.Shutdown(SocketShutdown.Both); socket.Close(); } catch { return null; } return byteReceive; }
服务端:
bool btnstatu = true; //开始停止服务状态 Socket listener; //开始停止服务按钮 private void btnStart_Click(object sender, EventArgs e) { CancellationTokenSource cts = new CancellationTokenSource(); Task task = new Task(() => Listen(cts.Token), cts.Token); if (btnstatu) { task.Start(); statuBar.Text = "服务已启动,等待客户端连接"; btnstatu = false; btnStart.Text = "停止服务"; } else { if (listener != null) { listener.Close(); listener = null; } cts.Cancel(); statuBar.Text = "服务端已停止服务"; btnstatu = true; btnStart.Text = "开始服务"; statuBar.Text = "服务已停止"; } } //监听函数 private void Listen(CancellationToken cts) { cts.ThrowIfCancellationRequested(); listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); IPEndPoint iep = new IPEndPoint(IPAddress.Any, ServerConfig.ServerPort); try { listener.Bind(iep); listener.Listen(10); while (true) { Socket accept = listener.Accept(); byte[] byteMessage = new byte[1024]; accept.Receive(byteMessage); string recvMsg = Encoding.Default.GetString(byteMessage).Replace("\0", ""); ShowText(DateTime.Now.ToString("[HH:mm:ss]") + accept.RemoteEndPoint.ToString() + "说:" + recvMsg); string sendMsg = "已收到消息"; accept.Send(Encoding.Default.GetBytes(sendMsg)); accept.Shutdown(SocketShutdown.Both); accept.Close(); } } catch { } } private void ShowText(string msg) { richTextBox1.SafeCall(() => { richTextBox1.AppendText(msg); richTextBox1.AppendText(System.Environment.NewLine); }); }
- c# Socket发送与接收方法
- socket 发送与接收
- C# socket 发送接收消息与发送接收文件 群发文件
- c# Socket同步发送接收数据
- C# SOCKET发送和接收例子
- socket C#发送int整数delphi接收
- 设置SOCKET的发送与接收缓冲区
- socket 发送与接收结构体
- socket的发送与接收缓冲区
- 设置SOCKET的发送与接收缓冲区
- 设置SOCKET的发送与接收缓冲区 .
- tcp socket的发送与接收缓冲区
- tcp socket的发送与接收缓冲区 .
- tcp socket的发送与接收缓冲区
- tcp socket的发送与接收缓冲区
- TCP socket的发送与接收缓冲区
- socket 的发送与接收缓冲区解析
- socket的发送与接收缓冲区
- Android Camera HAL浅析
- 虚拟机VMware破解版教程下载
- sqlserver索引介绍及优化
- php登陆模块详解($_SESSION | $_POST | $_SERVER)
- poj 1042
- c# Socket发送与接收方法
- 让sqlplus显示null
- 实现axis2两种不同方式的客户端
- 计算机办公软件提高
- 如何进行手机导航设置
- 技术VS管理——阿里要走102年,阿里的工程师能走多远呢?
- C#调用DLL入门方法
- c#连接各个数据库
- IOS 对UIImage图片进行缩放