博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Socket通信的服务器与客户端
阅读量:6253 次
发布时间:2019-06-22

本文共 4324 字,大约阅读时间需要 14 分钟。

客户端代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets;using System.Threading;namespace ClientSocket{    class Program    {        private static byte[] result = new byte[1024];        static void Main(string[] args)        {            //设定服务器IP地址              IPAddress ip = IPAddress.Parse("127.0.0.1");            Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            try            {                clientSocket.Connect(new IPEndPoint(ip, 8885)); //配置服务器IP与端口                  Console.WriteLine("连接服务器成功");            }            catch            {                Console.WriteLine("连接服务器失败,请按回车键退出!");                return;            }            for (int i = 0; i < 10; i++)            {                try                {                    Thread.Sleep(1000);    //等待1秒钟                      string sendMessage = "client send Message Hellp" + DateTime.Now;                    clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));                    Console.WriteLine("向服务器发送消息:{0}" + sendMessage);                }                catch                {                    clientSocket.Shutdown(SocketShutdown.Both);                    clientSocket.Close();                    break;                }            }            Console.WriteLine("发送完毕,按回车键退出");            Console.ReadLine();        }    }  }

服务器端代码

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net.Sockets;using System.Net;using System.Threading;using LogHelper;using System.IO;using System.Diagnostics;namespace SocketForm{    class SocketConnection    {        private int port;//监听端口号        private static byte[] result = new byte[1024];        private static Socket server;//服务器Socket        private IPAddress ip;//Ip地址        private static Socket client;//客户端Socket        private static Thread myThread;//启动监听线程        private static Thread receiveThread;//接收数据线程        public SocketConnection(string ipadr,int port)        {            this.port = port;//初始化端口            ip = IPAddress.Parse(ipadr);//初始化ip地址                   }        public void setConnection()        {            server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//实例化socket对象(采用网络流传输方式,TCP协议传输)            server.Bind(new IPEndPoint(ip, port));//绑定ip及端口            Console.WriteLine("绑定端口ip"+this.ip+":"+this.port);            server.Listen(10);//监听端口            Console.WriteLine("正在监听IP"+this.ip+"  端口:"+this.port+"......");            Log.Errorname = "Info";            Log.CreateLogTxt("监听Ip"+this.ip+"端口"+this.port+"......");            myThread = new Thread(ListenClientConnect);            myThread.Start();          }        private static void ListenClientConnect()        {            while (true)            {                client = server.Accept();                receiveThread = new Thread(ReceiveMessage);                receiveThread.Start(client);            }        }        ///           /// 接收消息          ///           ///           private static void ReceiveMessage(object clientSocket)        {           client = (Socket)clientSocket;            while (true)            {                try                {                    //通过clientSocket接收数据                      int receiveNumber = client.Receive(result);//获取接收数据的长度                    StreamWriter resultMessage = new StreamWriter("out.txt", true);//输出流实例化                    resultMessage.WriteLine("接收客户端{0}消息{1}", client.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));                    resultMessage.Close();                    Log.Errorname = "Info";                    Log.CreateLogTxt("信息获取成功");                    Console.WriteLine("信息获取成功");                }                catch (Exception ex)                {                    Log.Errorname = "ERROR";                    Log.CreateLogTxt("从服务器获取数据错误"+"错误信息"+ex.Message);                    Console.WriteLine("从服务器获取数据错误" + "错误信息" + ex.Message);                    client.Shutdown(SocketShutdown.Both);                    client.Close();                    break;                }            }        }      }}

 

转载于:https://www.cnblogs.com/zhaiyansheng/p/5906186.html

你可能感兴趣的文章
小米武汉总部开工雷军亲自出席:远期在汉要招上万人
查看>>
传贾跃亭将FF股份交给友人代持以规避失信人限制
查看>>
豆盟递交招股书:单季利润1394万 蓝标为第二大股东
查看>>
申小雨命案审理延期至3月5日 警方将翻译嫌犯口供
查看>>
第五届中欧文化艺术节开幕 谭盾“领衔”献艺
查看>>
财政部:2018年全国财政收入超18万亿元 同比增6.2%
查看>>
C罗失点 尤文图斯3:0切沃延续联赛不败纪录
查看>>
湖北整治清退非法码头 为长江“留白增绿”
查看>>
为什么要把网站升级到HTTPS
查看>>
【Hello CSS】序章-起源
查看>>
转行IT要趁早,多迪教育新就业数据告诉你真相
查看>>
JavaScript深入之参数按值传递
查看>>
Fragment总结
查看>>
Flutter进阶:深入探究 ListView 和 ScrollPhysics
查看>>
深入了解virtual dom
查看>>
spring事物应该注意的地方
查看>>
浅析 Vue 2.6 中的 nextTick 方法
查看>>
一篇文章搞懂闭包。
查看>>
结合实际场景谈一谈微服务配置
查看>>
我的前端面试总结(套路篇)
查看>>