VS控制台程序Socket通讯

来源:互联网 发布:python 日志文件 编辑:程序博客网 时间:2024/05/22 02:12

    Socket通讯一个灰常简单得小栗子。~~~

    服务器端:

    

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net.Sockets;using System.Net;using System.Threading; namespace ConsoleApplication{    class Program    {        private static byte[] result = new byte[1024];        private static int myProt = 8888;   //端口          static Socket serverSocket;      static  SqlTool st = new SqlTool();//数据库操作工具类        static void Main(string[] args)        {            //服务器IP地址              IPAddress ip = IPAddress.Parse("192.168.1.88");            serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            serverSocket.Bind(new IPEndPoint(ip, myProt));  //绑定IP地址:端口              serverSocket.Listen(10);    //设定最多10个排队连接请求              Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());            //通过Clientsoket发送数据              Thread myThread = new Thread(ListenClientConnect);            myThread.Start();            Console.ReadLine();        }        /// <summary>          /// 监听客户端连接          /// </summary>        private static void ListenClientConnect()        {            while (true)            {                Socket clientSocket = serverSocket.Accept();                clientSocket.Send(Encoding.UTF8.GetBytes("服务器调皮地 say hello"));                Thread receiveThread = new Thread(ReceiveMessage);                receiveThread.Start(clientSocket);            }        }           /// <summary>          /// 接收消息          /// </summary>          /// <param name="clientSocket"></param>        private static void ReceiveMessage(object clientSocket)          {              Socket myClientSocket = (Socket)clientSocket;              while (true)              {                  try                  {                      //通过clientSocket接收数据                      int receiveNumber = myClientSocket.Receive(result);                      Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.UTF8.GetString(result, 0, receiveNumber));                    string SqlStr = "insert into Test (DataID,DataDesc,DataUnit)values ('" + "Test" + "','" +"测试" + "','" + "V" + "')";                    //利用公共类的ExecuteSql方法对数据库进行操作                    st.ExecuteSql(SqlStr);                                     }                  catch(Exception ex)                  {                      Console.WriteLine(ex.Message);                      myClientSocket.Shutdown(SocketShutdown.Both);                      myClientSocket.Close();                      break;                  }              }          }            }}

    客户端:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets;using System.Threading;namespace ConsoleApplication1{    class Program    {               private static byte[] result = new byte[4096];          static void Main(string[] args)          {              //设定服务器IP地址              IPAddress ip = IPAddress.Parse("服务器IP地址");              Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);              try              {                  clientSocket.Connect(new IPEndPoint(ip, 8888)); //配置服务器IP与端口                  Console.WriteLine("连接服务器成功");              }              catch              {                  Console.WriteLine("连接服务器失败,请按回车键退出!");                  return;              }              //通过clientSocket接收数据              int receiveLength = clientSocket.Receive(result);            Console.WriteLine("接收服务器消息:{0}",Encoding.UTF8.GetString(result,0,receiveLength));                        //通过 clientSocket 发送数据              for (int i = 0; i < 1000; i++)              {                  try                  {                      Thread.Sleep(5000);    //等待5秒钟                      string sendMessage = "我们接收到的当前系统时间为: " + DateTime.Now;                   clientSocket.Send(Encoding.UTF8.GetBytes(sendMessage));                      Console.WriteLine("向服务器发送消息:{0}" ,sendMessage);                  }                  catch                  {                      clientSocket.Shutdown(SocketShutdown.Both);                      clientSocket.Close();                      break;                  }              }              Console.WriteLine("发送完毕,按回车键退出");              Console.ReadLine();          }          }    }

    两个都是控制台得应用程序,比较省事。对了,还有被吐槽滥用换行,哈哈,我真的是感觉这样看起来比较清楚,好多人跟我讲过,不过我就是不听,咬我也不听,哈哈。

原创粉丝点击