zoukankan      html  css  js  c++  java
  • unity3d C# soket客户端接受失败

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System;
    using System.Linq;
    using System.Text;
    
    using System.Net;
    using System.Net.Sockets;
    using System.IO;
    using System.Threading;
    using UnityEngine.UI;
    using UnityEngine.Networking;
    
    public class ss : MonoBehaviour {
        public TcpClient client;
        public BinaryReader breader;
        public BinaryWriter bwriter;
        public NetworkStream netstream;
        string abc = "";
        string abc0 = "";
        Text text;
        public bodyController CF;
        public float m_speed = 5f;
        private static Socket clientSocket;
            private static byte[] result = new byte[1024];
        // Use this for initialization
        void Start () {
            CF = GameObject.Find("RimaVirtualBody/rima").GetComponent<bodyController>();
            client = new TcpClient("172.20.20.241", 8140);
            // client = new TcpClient("127.0.0.1", 8139);
            //  netstream = client.GetStream();
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //IPAddress mIp = IPAddress.Parse("172.20.20.241");
            //IPEndPoint ip_end_point = new IPEndPoint(mIp, 8140);
            IPAddress mIp = IPAddress.Parse("127.0.0.1");
            IPEndPoint ip_end_point = new IPEndPoint(mIp, 8140);
    
            clientSocket.Connect(ip_end_point);
    
           //breader = new BinaryReader(netstream);
           // bwriter = new BinaryWriter(netstream);
    
    
            Thread threadReceive = new Thread(new ThreadStart(ReceiveData));
            threadReceive.IsBackground = false;
            threadReceive.Start();
    
            //text = GameObject.Find("Canvas/Text").GetComponent<Text>();
        }
        private void ReceiveData()
        {
     
                int length = clientSocket.Receive(result);
                //string receiveSting = null;
                abc = Encoding.UTF8.GetString(result, 0, length);
    
    
    
                Debug.Log(abc);
       
        }
    
    
    
        // Update is called once per frame
        void Update () {
            if(abc!=abc0)
            {
            if (abc == "聆听") CF.hear();
             if (abc == "跳舞") CF.dance();
            if (abc == "谈话") CF.talk();
             if(abc=="立正") CF.idle();
    
                abc0 = abc;
            }
            else
            {
             
            }
        }
    }
    


    总是只接受一个字符串,或者把对方发来的接成yige

    前者原因是while(true)漏了,后者是因为没关闭clientSocket.Receive,可以clientSocket.close();

            while (true)
            {
                int length = clientSocket.Receive(result);
                //string receiveSting = null;
                abc = Encoding.UTF8.GetString(result, 0, length);
                Debug.Log(abc);
            }

    前者改动后可以省略后者的改动。

  • 相关阅读:
    pytest+allure详情版
    【Django】django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required
    Docker-Portainer
    滑动解锁和截图
    调用JavaScript(浏览器滚动条)
    WebDriver操作cookie
    下载文件
    多表单切换
    利用parameterized模块进行unittest参数化
    关于软件测试必备的技能
  • 原文地址:https://www.cnblogs.com/fengmao31/p/13880204.html
Copyright © 2011-2022 走看看