猪皮♧ 2024-06-24 23:35 采纳率: 0%
浏览 12

Socket编程报错,如何解决?

大佬们 在这段代码中,运行到 socket.Send(sendBytes);会报错:NullReferenceException: Object reference not set to an instance of an object
这是为什么

img

我把Send()改成这样 并直接运行就是正确的

img

感觉是因为socket创建在connection()中 所以在Send()中用不到吗?如果是这样可以怎么优化?

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-24 23:35
    关注

    引自免费微信小程序:皆我百晓生

    这个问题是由于socketconnection方法内部创建并初始化为null导致的。当您尝试使用socket.Send()时,它将抛出NullReferenceException

    要解决此问题,您可以重写connection方法,确保在访问之前先检查socket是否已初始化。以下是修改后的代码示例:

    public void connection()
    {
        if(socket == null)
            throw new InvalidOperationException("Socket is null");
        
        // 连接到服务器
        socket.Connect("127.0.0.1", 8888);
    }
    
    public void Send()
    {
        if(socket == null)
            throw new InvalidOperationException("Socket is null");
    
        string sendstr = InputField.text;
        Debug.Log(sendstr);
    
        byte[] sendBytes = Encoding.Default.GetBytes(sendstr);
    
        Debug.Log("sendBytes " + BitConverter.ToString(sendBytes));
    
        socket.Send(sendBytes);
    }
    

    在这个版本中,我们首先检查socket是否为null,然后在发送数据之前都进行了这些检查。这样,当socket未被初始化时,程序将会捕获异常并告诉用户错误的原因。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月24日