java单客户端和服务器端

简介: java单客户端和服务器端

基于TCP协议的网络编程可以实现C/S结构的程序,C客户端发送数据,S服务器端接收数据后发回给客户端,客户端接收后输出到屏幕。客户端通过创建Socket连接服务器,服务器端监听到连接后,也创建Socket,两端的Socket连在一起,形成一个输出输出流,客户端发送消息,用输出流,服务器端接收消息用输入流,反之亦然。


客户端代码tcp. EchoClient



package test;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
//客户端
public class Client  {
   public static void main(String[] args) {
     String hostName="";
     int portNumber=7;
     try {
       Socket echoSocket=new Socket(hostName,portNumber);
       PrintWriter out=new PrintWriter(echoSocket.getOutputStream(),true);
       BufferedReader in=new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
       BufferedReader stdIn=new BufferedReader(new InputStreamReader(System.in));
       String userInput;
       while((userInput=stdIn.readLine())!=null) {
        out.println(userInput);
         System.out.println("echo:"+in.readLine());
       }
     }catch(UnknownHostException e) {
      e.printStackTrace();
      System.exit(1);
     }catch(IOException e) {
       e.printStackTrace();
       System.exit(1);
     }
   }
}


服务器端代码tcp. EchoServer



package test;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
//服务器端
public class Server {
   public static void main(String[] args) {
     try {
       ServerSocket serverSocket=new ServerSocket(7);
       Socket clientSocket=serverSocket.accept();
       PrintWriter out=new PrintWriter(clientSocket.getOutputStream(),true);
       BufferedReader in=new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
       String inputLine;
       while((inputLine=in.readLine())!=null) {
         System.out.println("来自客户端:"+inputLine);
         out.println(inputLine);
       }
     }catch(IOException e) {
       e.printStackTrace();
     }
   }
}


运行时,先运行服务器端,再运行客户端,在客户端输入数据,发送给服务器,服务器接收后再返回给客户端,客户端接收后打印到屏幕。


客户端界面:



服务器端界面:



tips: 如果Address already in use: JVM_Bind 端口被占用 解决方法:假设端口为1099


1.启动cmd, 执行命令


netstat -ano|findstr 1099


2.会查询出占用端口号的进程号,这时候执行命令


taskkill -f -pid 进程号 杀死进程,然后重启Tomcat即可解决

相关文章
|
1月前
|
JSON NoSQL Java
【Redis】2、Redis 的 Java 客户端(Jedis 和 SpringDataRedis)
【Redis】2、Redis 的 Java 客户端(Jedis 和 SpringDataRedis)
44 0
|
4天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
23 11
|
1月前
|
Java 关系型数据库 MySQL
Flink1.18.1和CDC2.4.1 本地没问题 提交任务到服务器 报错java.lang.NoClassDefFoundError: Could not initialize class io.debezium.connector.mysql.MySqlConnectorConfig
【2月更文挑战第33天】Flink1.18.1和CDC2.4.1 本地没问题 提交任务到服务器 报错java.lang.NoClassDefFoundError: Could not initialize class io.debezium.connector.mysql.MySqlConnectorConfig
50 2
|
1月前
|
监控 Java 网络安全
|
2月前
|
Java
java上传、下载、预览、删除ftp服务器上的文件
java上传、下载、预览、删除ftp服务器上的文件
|
2月前
|
移动开发 编解码 网络协议
用Java的BIO和NIO、Netty来实现HTTP服务器(三) 用Netty实现
用Java的BIO和NIO、Netty来实现HTTP服务器(三) 用Netty实现
|
2月前
|
网络协议 Java Linux
用Java来实现BIO和NIO模型的HTTP服务器(二) NIO的实现
用Java来实现BIO和NIO模型的HTTP服务器(二) NIO的实现
|
2月前
|
编解码 网络协议 Java
用Java的BIO和NIO、Netty实现HTTP服务器(一) BIO与绪论
用Java的BIO和NIO、Netty实现HTTP服务器(一) BIO与绪论
|
2月前
|
Java Linux 网络安全
vscode 远程服务器 java 无法跳转
【2月更文挑战第4天】
|
3月前
|
JSON Java API
Java 编程问题:十三、HTTP 客户端和 WebSocket API
Java 编程问题:十三、HTTP 客户端和 WebSocket API
88 0