C#如何实现套接字发送接收数据
发表于:2024-09-25 作者:千家信息网编辑
千家信息网最后更新 2024年09月25日,这篇文章主要介绍了C#如何实现套接字发送接收数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下服务端namespace T
千家信息网最后更新 2024年09月25日C#如何实现套接字发送接收数据
这篇文章主要介绍了C#如何实现套接字发送接收数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
具体内容如下
服务端
namespace TestServer{ public partial class ServerForm : Form { Socket socketSend; // 将远程连接的客户端的IP地址和socket存入集合 DictionarydicSocket = new Dictionary (); public ServerForm() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { try { // 当点击开始监听后,在服务器创建一个负责监听IP地址和端口号的socket Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = IPAddress.Any;//;IPAddress.Parse(txtServer.Text) IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text)); // 监听 socketWatch.Bind(point); ShowMsg("监听成功"); socketWatch.Listen(10); Thread th = new Thread(Listen); th.IsBackground = true; th.Start(socketWatch); } catch { } } void Listen(object o) { // 等待客户端连接 并创建一个负责通信的Socket Socket socketWatch = o as Socket; while (true) { socketSend = socketWatch.Accept(); dicSocket.Add(socketSend.RemoteEndPoint.ToString(),socketSend); cboUsers.Items.Add(socketSend.RemoteEndPoint.ToString()); ShowMsg(socketSend.RemoteEndPoint.ToString() + " : " + "连接成功"); Thread th = new Thread(Recive); th.IsBackground = true; th.Start(socketSend); } } void Recive(object o) { socketSend = o as Socket; while (true) { // 客户端连接成功后,服务器应接受客户端发来的消息 byte[] buffer = new byte[1024 * 1024 * 2]; // 实际接收到的有效字节数 int r = socketSend.Receive(buffer); if (r == 0) { break; } string str = Encoding.UTF8.GetString(buffer, 0, r); ShowMsg(socketSend.RemoteEndPoint + " : " + str); } } void ShowMsg(string str) { txtLog.AppendText(str + "\r\n"); } private void Form1_Load(object sender, EventArgs e) { Control.CheckForIllegalCrossThreadCalls = false; } private void btnSend_Click(object sender, EventArgs e) { string str = txtMsg.Text; byte[] buffer = Encoding.UTF8.GetBytes(str); string ip = cboUsers.SelectedItem.ToString(); dicSocket[ip].Send(buffer); //socketSend.Send(buffer); txtMsg.Text = ""; } private void btnSendUser_Click(object sender, EventArgs e) { string json = JsonConvert.SerializeObject(UserList()); byte[] buffer = Encoding.UTF8.GetBytes(json); socketSend.Send(buffer); } private List UserList() { List userList = new List (); User user = null; string sql = "select * from user_table"; SqlCommand cmd = SqlUtils.ConnectSql(sql); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { user = new User(sdr.GetInt32(0), sdr.GetString(1), sdr.GetString(2), sdr.GetInt32(3)); userList.Add(user); } return userList; } }}
客户端
namespace TestClient{ public partial class ClientForm : Form { Socket socketSend; public ClientForm() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { try { // 创建负责通信的socket socketSend = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); IPAddress ip = IPAddress.Parse(txtServer.Text); IPEndPoint point = new IPEndPoint(ip,Convert.ToInt32(txtPort.Text)); socketSend.Connect(point); ShowMsg("连接成功"); Thread th = new Thread(Recive); th.IsBackground = true; th.Start(); } catch { } } void Recive() { while (true) { // 客户端连接成功后,服务器应接受客户端发来的消息 byte[] buffer = new byte[1024 * 1024 * 2]; // 实际接收到的有效字节数 int r = socketSend.Receive(buffer); if (r == 0) { break; } string str = Encoding.UTF8.GetString(buffer, 0, r); ShowMsg(socketSend.RemoteEndPoint + " : " + str); } } void ShowMsg(string str) { txtLog.AppendText(str + "\r\n"); } private void Form1_Load(object sender, EventArgs e) { Control.CheckForIllegalCrossThreadCalls = false; } private void btnSend_Click(object sender, EventArgs e) { string str = txtMsg.Text.Trim(); byte[] buffer = Encoding.UTF8.GetBytes(str); socketSend.Send(buffer); txtMsg.Text = ""; } }}
效果
发送json数据
感谢你能够认真阅读完这篇文章,希望小编分享的"C#如何实现套接字发送接收数据"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
客户
客户端
成功
篇文章
服务
监听
数据
服务器
套接字
C#
有效
地址
字节
实际
消息
通信
价值
兴趣
内容
口号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳软件开发夏前锋
河南省网络安全宣传周素材
国内服务器配置最好的
四川网络安全集团基地
服务器上面怎么有设备和驱动器
魔域 数据库
数据库能否共享在不同电脑上吗
创建文件服务器
江西联荻互联网科技有限公司
南京霸潮网络技术
互联网科技模板ppt
网络安全法第五十五条解读
湖北省首家网络安全协会
提供软件开发多少钱
互联网科技捡漏
传递到数据库的汉字乱码
江苏软件开发技术学校
易语言数据库 sql
服务器安全监控软件推荐
浪潮服务器系列介绍
natapp小程序需要服务器吗
微信刷机软件开发
汽车软件开发待遇如何
数据库大作业如何设计方案
国家推动网络安全 建设
服务器管理未激活
网络安全自查报告幼儿园
网络安全协会简称
常见的网络技术安全
网页数据库怎么填写