public class TCPClient { public static void main(String[] args) throws Exception { Socket client = new Socket(InetAddress.getLocalHost(),3000); InputStream is = client.getInputStream(); byte[] buf = new byte[1024]; int len = is.read(buf); while (len != -1){ System.out.println(new String(buf, 0, len)); len = is.read(buf); } is.close(); client.close(); // 关闭流和Socket连接 } }
时间: 2024-02-15 12:27:29 浏览: 156
这是一个Java TCP客户端程序,它会连接到本地主机上的TCP服务器。代码的主要逻辑如下:
1. 创建一个Socket对象,指定要连接的服务器IP地址和端口号。这里使用了InetAddress.getLocalHost()方法获取本机的IP地址,端口号为3000。
2. 从Socket对象中获取输入流对象InputStream,用于读取服务器发送的数据。
3. 定义一个字节数组buf用于存储从服务器读取到的数据,初始化长度为1024。
4. 调用InputStream对象的read()方法读取服务器发送的数据,返回值为读取到的字节数。如果读取到的字节数为-1,则表示服务器已经关闭连接,跳出循环。
5. 将读取到的数据转换成字符串,并打印输出。注意要指定字符串的长度为实际读取到的字节数len,避免输出多余的空白字符。
6. 重复执行步骤4和步骤5,直到读取到的字节数为-1。
7. 关闭输入流对象和Socket连接,释放资源。
需要注意的是,这段代码中没有进行异常处理,实际应用中需要根据具体情况添加try-catch语句来捕获可能出现的异常。
相关问题
以下是基于Java语言的TCP面向连接的简单聊天交互程序的实现: 服务器端代码: ```java import java.io.*; import java.net.*; public class TCPServer { public static void main(String[] args) throws Exception { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服务器已启动,等待客户端连接..."); Socket socket = serverSocket.accept(); System.out.println("客户端已连接,IP地址为:" + socket.getInetAddress().getHostAddress()); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); String message; while ((message = br.readLine()) != null) { System.out.println("客户端发来消息:" + message); pw.println("服务器已收到消息:" + message); } br.close(); pw.close(); socket.close(); serverSocket.close(); } } ``` 客户端代码: ```java import java.io.*; import java.net.*; public class TCPClient { public static void main(String[] args) throws Exception { Socket socket = new Socket("localhost", 8888); System.out.println("已连接服务器,IP地址为:" + socket.getInetAddress().getHostAddress()); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); String message; while ((message = br.readLine()) != null) { out.println(message); System.out.println("已发送消息:" + message); System.out.println("服务器回复:" + in.readLine()); } br.close(); in.close(); out.close(); socket.close(); } } ``` 运行方式: 1. 在命令行中进入服务器端代码所在目录,执行`javac TCPServer.java`编译代码,然后执行`java TCPServer`启动服务器端程序; 2. 在命令行中进入客户端代码所在目录,执行`javac TCPClient.java`编译代码,然后执行`java TCPClient`启动客户端程序; 3. 在客户端程序中输入要发送的消息,回车后即可发送并接收服务器端的回复。
谢谢您提供的示例代码,这是一个基于Java语言实现的简单TCP面向连接的聊天程序,可以实现客户端与服务器端之间的交互。在这个程序中,服务器端通过在一个循环中不断接收来自客户端的消息,然后将消息回传给客户端。而客户端通过从标准输入中读取用户输入的消息,然后将消息发送到服务器端,并从服务器端读取回复。这个程序可以用作一个简单的聊天室,但是在实际应用中需要考虑更多的安全性和可靠性问题。
package step3; import java.io.*; import java.net.*; // TCP客户端 public class TCPClient { public static void main(String[] args) throws Exception { MyTCPServer myTCPServer = new MyTCPServer(); myTCPServer.start(); // ---------------------Begin------------------------ // 创建一个Socket并连接到指定的服务器端,完成与服务端交流 // ---------------------End------------------------ } }
在这个代码中,我们需要创建一个`Socket`对象,并连接到指定的服务器端。
```
package step3;
import java.io.*;
import java.net.*;
// TCP客户端
public class TCPClient {
public static void main(String[] args) throws Exception {
MyTCPServer myTCPServer = new MyTCPServer();
myTCPServer.start();
// 创建一个Socket并连接到指定的服务器端
Socket socket = new Socket("localhost", 8888);
// ---------------------End------------------------
}
}
```
在上面的代码中,我们创建了一个`Socket`对象,并指定了要连接的服务器地址和端口号。这里我们使用`localhost`表示连接本机,端口号为`8888`。如果要连接远程服务器,需要指定服务器的IP地址或域名。
在下一步中,我们需要向服务器发送数据或接收服务器返回的数据。
阅读全文