在套接字

时间:2016-04-05 00:24:51

标签: java python sockets

所以我尝试使用覆盆子pi和笔记本电脑之间的套接字通过客户端/服务器进行通信。我已经能够在我的pi上使用简单的python脚本发送基本字符串,以了解它是如何工作的基本概念。现在我有了更高级的一点,开始使用OpenCV和USB摄像头来制作一个小小的安全系统来检测摄像机框架中的运动。我有安全系统与服务器连接的python脚本,它应该打印出来"被占用"或者"空置"在我的笔记本电脑上的控制台中实时(最终应该打开一个弹出菜单,警告检测到运动),但它只打印出一长串巨大的字符串"被占用的"或者"空置"一旦我关闭与我的Pi的连接。为什么不实时打印出来?这是我笔记本电脑上的java代码,不幸的是我的Pi现在在学校,我无法访问python代码,但我明天会发布。

public class PyComms {


    public static void main(String[] args) {


        try{
            ServerSocket server = new ServerSocket(4444);
            System.out.println("Waiting for client on port 4444");
            while(true){
                Socket connected = server.accept();
                System.out.println("CONNECTED WITH CLIENT");
                BufferedReader inFromPi = new BufferedReader(new InputStreamReader(connected.getInputStream()));
                while(true){
                    String fromclient = inFromPi.readLine();

                    if(fromclient.equalsIgnoreCase("Occupied")){
                        System.out.println("Client responded with "+fromclient + "\n");
                    }
                    else{
                        System.out.println("Client responded with "+fromclient + "\n");
                        connected.close();
                    }
                }

            }   

        }
        catch(Exception e){
            System.out.println(e);

        }


    }

 }

1 个答案:

答案 0 :(得分:0)

答案正是@jtahlborn说的。我所要做的就是在python代码中发送每条消息后包含一个新行。我通过做类似client_socket.send(text+'\n')

的事情来实现这一目标