zoukankan      html  css  js  c++  java
  • socket收发消息

    1.socket通讯类
    using System;
    using System.Collections.Generic;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    namespace ConsoleApplication1
    {
        public static class SocketTest
        {
            private static Encoding encode = Encoding.Default;
            /// <summary>
            /// 监听请求
            /// </summary>
            /// <param name="port"></param>
            public static void Listen(int port)
            {
                Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                listenSocket.Bind(new IPEndPoint(IPAddress.Any, port));
                listenSocket.Listen(100);
                Console.WriteLine("Listen " + port + " ...");
                while (true)
                {
                    Socket acceptSocket = listenSocket.Accept();
                    string receiveData = Receive(acceptSocket, 5000); //5 seconds timeout.
                    Console.WriteLine("Receive:" + receiveData);
                    acceptSocket.Send(encode.GetBytes("ok"));
                    DestroySocket(acceptSocket); //import
                }
            }
            /// <summary>
            /// 发送数据
            /// </summary>
            /// <param name="host"></param>
            /// <param name="port"></param>
            /// <param name="data"></param>
            /// <returns></returns>
            public static string Send(string host, int port, string data)
            {
                string result = string.Empty;
                Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                clientSocket.Connect(host, port);
                clientSocket.Send(encode.GetBytes(data));
                Console.WriteLine("Send:" + data);
                result = Receive(clientSocket, 5000 * 2); //5*2 seconds timeout.
                Console.WriteLine("Receive:" + result);
                DestroySocket(clientSocket);
                return result;
            }
            /// <summary>
            /// 接收数据
            /// </summary>
            /// <param name="socket"></param>
            /// <param name="timeout"></param>
            /// <returns></returns>
            private static string Receive(Socket socket, int timeout)
            {
                string result = string.Empty;
                socket.ReceiveTimeout = timeout;
                List<byte> data = new List<byte>();
                byte[] buffer = new byte[1024];
                int length = 0;
                try
                {
                    while ((length = socket.Receive(buffer)) > 0)
                    {
                        for (int j = 0; j < length; j++)
                        {
                            data.Add(buffer[j]);
                        }
                        if (length < buffer.Length)
                        {
                            break;
                        }
                    }
                }
                catch { }
                if (data.Count > 0)
                {
                    result = encode.GetString(data.ToArray(), 0, data.Count);
                }
                return result;
            }
            /// <summary>
            /// 销毁Socket对象
            /// </summary>
            /// <param name="socket"></param>
            private static void DestroySocket(Socket socket)
            {
                if (socket.Connected)
                {
                    socket.Shutdown(SocketShutdown.Both);
                }
                socket.Close();
            }
        }
    }
    2.socket调用,先启用监听程序
     2.1
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                SocketTest.Listen(11000);
                Console.Read();
            }
        }
    }
    2.2 再起客户端
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using SocketIM;
    using System.Net;
    using System.Net.Sockets;
    using ConsoleApplication1;
    
    namespace ConsoleApplication2
    {
    
    class Program
    {
        static void Main(string[] args)
        {
            SocketTest.Send("127.0.0.1", 11000, "www.jb51.net");
            Console.Read();
        }
    
    }
  • 相关阅读:
    又联考了一场,感觉自己好菜啊,T1没写出来,后来花了一个早上调试。QAQ。最后发现是个-1还有取模没打。。。TAT。。。难受极了!!!
    又联考了一场,感觉自己好菜啊,T2推出了公式但是不会逆元QAQ,难受啊!!!不过都确实是一道逆元的好题撒!
    USACO 2006 November Gold Corn Fields
    SCOI 2005 互不侵犯
    PKU P2411 Mondriaan's Dream
    一道装呀(状压)DP
    继续写高精!noip2012国王游戏。。。
    上两道省选的高精吧!
    找丑数
    本地访问weblogic控制台无反应,关闭linux操作系统防火墙
  • 原文地址:https://www.cnblogs.com/kexb/p/6886254.html
Copyright © 2011-2022 走看看