从面向连接的(TCP)客户端/服务器的服务器套接字读取客户端套接字上的字节数据包?

时间:2010-09-08 06:24:25

标签: java sockets tcp

我正在创建面向连接的服务器/客户端(TCP)socket.i创建了整个服务器套接字并且我已经在服务器套接字上成功写入了数据包,我也创建了客户端套接字但是我无法读取数据包所以请给我关于在客户端套接字上读取数据包(代码或示例)的想法,并清楚地告诉我可以在客户端套接字上读取数据包,如果没有则应该使用什么代替客户端和服务器套接字

2 个答案:

答案 0 :(得分:1)

您通常不会一次读取数据包 - 您可以阅读InputStream返回的Socket.getInputStream()。您几乎肯定会将连接视为流,而不是尝试处理单个数据包。

如果您仍然遇到问题,如果您可以发布一些代码来展示您如何连接套接字等,那将会非常有用。

答案 1 :(得分:0)

我必须在大学的网络课程中实施这样的事情。

以下是book

的摘录

TCPServer.java

import java.io.*;
import java.net.*;

class TCPServer
{
   public static void main(String argv[]) throws Exception
      {
         String clientSentence;
         String capitalizedSentence;
         ServerSocket welcomeSocket = new ServerSocket(6789);

         while(true)
         {
            Socket connectionSocket = welcomeSocket.accept();
            BufferedReader inFromClient =
               new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
            DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
            clientSentence = inFromClient.readLine();
            System.out.println("Received: " + clientSentence);
            capitalizedSentence = clientSentence.toUpperCase() + '\n';
            outToClient.writeBytes(capitalizedSentence);
         }
      }
}

TCPClient.java

import java.io.*;
import java.net.*;

class TCPClient
{
 public static void main(String argv[]) throws Exception
 {
  String sentence;
  String modifiedSentence;
  BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
  Socket clientSocket = new Socket("localhost", 6789);
  DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
  BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  sentence = inFromUser.readLine();
  outToServer.writeBytes(sentence + '\n');
  modifiedSentence = inFromServer.readLine();
  System.out.println("FROM SERVER: " + modifiedSentence);
  clientSocket.close();
 }
}

希望这足以弄清楚你做错了什么。祝你好运!