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);
            }

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

  • 相关阅读:
    Android中获取屏幕高度和宽度
    Android--第三方控件--okHttp
    Android中获取手机电量信息
    Android中获取并设置屏幕亮度
    ViewPager实现图片的轮播
    ScrollView嵌套使用ListView冲突的解决与分析
    Vue中的MVVM框架
    vue(一)
    RabbitMQ消费端ACK与重回队列机制,TTL,死信队列详解(十一)
    RabbitMQ消费端限流策略(十)
  • 原文地址:https://www.cnblogs.com/fengmao31/p/13880204.html
Copyright © 2011-2022 走看看