socket通信マルチスレッド呼び出しフォーム(依頼)のいくつかの知識点を調べに備えて記録する

5554 ワード

1.socket通信による漢字の伝送方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte)送信受信はこのように変換される
ちょくせつプログラム
 
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        // 
        public delegate void ShowMessageHandel(string msg);
        // 
        public void showMsg(string msg)
        {
            listBox1.Items.Add(msg);
        }
        private void Form1_Load(object sender, EventArgs e)
        {

            //Control.CheckForIllegalCrossThreadCalls = false;
            Thread th = new Thread(new ThreadStart(ServerSocket));
            th.Start();
            // ServerSocket();
        }
        Socket client;
        public void ServerSocket()
        {
            IPEndPoint ipP = new IPEndPoint(IPAddress.Parse("192.168.1.104"), 6000);

            Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socketServer.Bind(ipP);
            while (true)
            {
                socketServer.Listen(5);
                client = socketServer.Accept();

                Thread thClient = new Thread(new ThreadStart(ClientSocket));
                thClient.Start();

            }
        }
        public void ClientSocket()
        {
            ShowMessageHandel smh = showMsg;
           
            byte[] byteMsg = new byte[1024];
            while (true)
            {
                client.Receive(byteMsg, byteMsg.Length, SocketFlags.None);
                client.Send(System.Text.ASCIIEncoding.UTF8.GetBytes(" "));
                client.Send(UTF8Encoding.GetEncoding("GB2312").GetBytes(" "));

                // listBox1.Items.Add(Encoding .ASCII.GetString(byteMsg));

                // 
                string strMsg = UTF8Encoding.GetEncoding("GB2312").GetString(byteMsg);
                this.BeginInvoke(smh, strMsg);// 
            }
        }
    }

 
上のコードはただ参考に供して、どれだけ不足することを承知して、どうぞよろしくお愿いします