Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ip地址和端口号读取数据_Java - Fatal编程技术网

Java 从ip地址和端口号读取数据

Java 从ip地址和端口号读取数据,java,Java,我想读取在某个特定IP地址和端口号上流动的数据。我有使用java套接字编程读取数据的代码。这是我的代码 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.

我想读取在某个特定IP地址和端口号上流动的数据。我有使用java套接字编程读取数据的代码。这是我的代码

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerTcpip {

    public static void main(String[] args) throws IOException {

        String line=null;
        System.out.println("Waiting for client request");
        ServerSocket ss = new ServerSocket(5566);
        Socket socket = ss.accept();
         System.out.println("Client connected");
        DataInputStream input =  new DataInputStream(socket.getInputStream());

        Scanner sc = new Scanner(socket.getInputStream());
        while((line = sc.nextLine() )!= null){
            System.out.println(line);

        }

    }

}
这是我的代码。我用串口实用软件检查我的代码。所以,我的代码是服务器,软件是客户端。我在断开与客户端的连接后获取数据。连接时我无法获取数据。有人能指导我如何解决此问题吗

我想把数据发送到客户端,我用过

DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeUTF("server sending data");
但它也不起作用。任何人请帮助我


谢谢。

我认为是客户给您带来了问题。可能是缓冲,而您的测试数据太小,因此发送实际上不是立即完成的。数据太小,您的意思是从客户端接收数据?是的,例如
BufferedOutputStream
的默认缓冲区大小为8192字节。
BufferedWriter
的默认值为8192个字符(每个字符有16位)。他们可能需要一段时间才能向
套接字写入内容。您可以使用
flush()
方法在某个时间点强制写入。我尝试使用flush方法,但没有获得。实际上flush()方法是将数据推送到客户端,但首先我必须从客户端读取数据,然后我必须发送响应,所以我需要先从客户端读取数据。我的套接字连接到客户端,客户端正在发送数据,但在断开客户端连接后,我获取数据,但我想在客户端连接时读取数据。在socket编程中是否有任何选项可以像轮询功能一样对客户端ping 1秒或10秒。我认为是客户端造成了问题。可能是缓冲,而您的测试数据太小,因此发送实际上不是立即完成的。数据太小,您的意思是从客户端接收数据?是的,例如
BufferedOutputStream
的默认缓冲区大小为8192字节。
BufferedWriter
的默认值为8192个字符(每个字符有16位)。他们可能需要一段时间才能向
套接字写入内容。您可以使用
flush()
方法在某个时间点强制写入。我尝试使用flush方法,但没有获得。实际上flush()方法是将数据推送到客户端,但首先我必须从客户端读取数据,然后我必须发送响应,所以我需要先从客户端读取数据。我的套接字连接到客户端,客户端正在发送数据,但在断开客户端连接后,我获取数据,但我想在客户端连接时读取数据。在套接字编程中是否有任何选项可以像轮询功能一样对客户端ping 1秒或10秒。