`

java socket client-server

阅读更多

一个客户端,一个服务端,客户端可以发消息到服务端

 

客户端代码client:

package com.lw.socket.client;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class Client {

	public static final String IP = "localhost";// 服务器地址
	public static final int PORT = 8000;// 服务器端口号

	public static void main(String[] args) {
		Client client = new Client();
		client.handler();
	}

	private void handler() {
		try {
			// 实例化一个Socket,并指定服务器地址和端口
			Socket client = new Socket(IP, PORT);
			// 开启两个线程,一个负责读,一个负责写
			new Thread(new ClientReadThread(client)).start();
			new Thread(new ClientWriteThread(client)).start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 处理读操作的线程
	 */
	class ClientReadThread implements Runnable {
		private Socket client;
	
		public ClientReadThread(Socket client) {
			this.client = client;
		}
	
		@Override
		public void run() {
			DataInputStream dis = null;
			try {
				while (true) {
					// 读取客户端数据
					dis = new DataInputStream(client.getInputStream());
					String reciver = dis.readUTF();
					System.out.println("服务器端返回过来的是:" + reciver);
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
					if (dis != null) {
						dis.close();
					}
					if (client != null) {
						client = null;
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	/**
	 * 处理写操作的线程
	 */
	class ClientWriteThread implements Runnable {
		private Socket client;
	
		public ClientWriteThread(Socket client) {
			this.client = client;
		}
	
		@Override
		public void run() {
			DataOutputStream dos = null;
			BufferedReader br = null;
			try {
				while (true) {
					// 向客户端回复信息
					dos = new DataOutputStream(client.getOutputStream());
					System.out.print("客户端请输入:\r");
					// 键盘录入
					br = new BufferedReader(new InputStreamReader(System.in));
					String send = br.readLine();
					// 发送数据
					dos.writeUTF(send);
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
					if (dos != null) {
						dos.close();
					}
					if (br != null) {
						br.close();
					}
					if (client != null) {
						client = null;
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
}

 

服务端代码server:

package com.lw.socket.server;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

	public static final int PORT = 8000;// 监听的端口号

	public static void main(String[] args) {
		Server server = new Server();
		server.init();
	}

	public void init() {
		ServerSocket serverSocket = null;
		try {
			serverSocket = new ServerSocket(PORT);
			System.out.println("启动服务器....");
			int count = 0;
			while (true) {
				count++;
				Socket client = serverSocket.accept(); // 等待客户端链接
				System.out.println("客户端:"+InetAddress.getLocalHost()+"已连接到服务器" + ",连接数量:" + count);
				// 一个客户端连接就开户两个线程处理读写
				new Thread(new ServerReadThread(client)).start();
				new Thread(new ServerWriteThread(client)).start();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (serverSocket != null) {
					serverSocket.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 处理读操作的线程
	 */
	class ServerReadThread implements Runnable {
		private Socket client;
	
		public ServerReadThread(Socket client) {
			this.client = client;
		}
	
		@Override
		public void run() {
			DataInputStream dis = null;
			try {
				while (true) {
					// 读取客户端数据
					dis = new DataInputStream(client.getInputStream());
					String reciver = dis.readUTF();
					System.out.println("客户端发过来的内容:" + reciver);
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
					if (dis != null) {
						dis.close();
					}
					if (client != null) {
						client = null;
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	/**
	 * 处理写操作的线程
	 */
	class ServerWriteThread implements Runnable {
		private Socket client;
	
		public ServerWriteThread(Socket client) {
			this.client = client;
		}
	
		@Override
		public void run() {
			DataOutputStream dos = null;
			BufferedReader br = null;
			try {
				while (true) {
					dos = new DataOutputStream(client.getOutputStream()); // 向客户端回复信息
					System.out.print("服务端请输入:\r");
					
					br = new BufferedReader(new InputStreamReader(System.in)); // 键盘录入
					String send = br.readLine();
					
					dos.writeUTF(send); // 发送数据
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
					if (dos != null) {
						dos.close();
					}
					if (br != null) {
						br.close();
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
}

 

 

 

分享到:
评论

相关推荐

    Java 在Client-Server 网络中的应用

    ### Java在Client-Server网络中的应用详解 #### 一、Java网络应用模型 随着Java语言的广泛应用及其与互联网的高度融合,Java已经成为构建现代信息系统的重要工具之一。Java的特点,如跨平台性、面向对象的设计理念...

    socket.io,socket.io-client下载

    Socket.IO的核心组件包括Server端和Client端。在Node.js环境中,你可以安装`socket.io`模块来创建服务器端实例。服务器端可以监听特定的事件,并向连接的客户端广播消息。在客户端,你可以使用`socket.io-client`库...

    client-server-socket-using-java.rar_java programming_socket clie

    Java Socket编程是网络通信的核心部分,它允许两个网络应用程序通过TCP/IP协议进行数据交换。在Java中,Socket类和ServerSocket类提供了客户端-服务器模型的实现。本教程将深入探讨如何使用Java进行Socket编程。 ...

    client-server-socket.rar_Server

    本文将详细解析"client-server-socket.rar_Server"中的核心知识点,包括服务器端如何为客户端提供数学计算服务和时间查询服务,以及在实现这些服务时涉及到的Socket编程。 首先,我们来理解客户端-服务器模型。这种...

    Client-server_socket.rar_socket

    客户端-服务器(Client-server)架构中的套接字(Socket)技术是网络编程中的核心概念,主要涉及TCP(传输控制协议)通信。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它为应用程序提供了双向通信的...

    Java Socket 模拟 Ftp Server/Client

    Java Socket 模拟 Ftp Server/Client

    Chat---Client---Server.rar_connect

    可能使用的编程语言有Python(使用socket库)、Java(使用Socket类)或其他支持网络编程的语言。 2. **客户端代码**:客户端程序设计为用户界面友好,允许用户输入消息并发送,同时接收并展示服务器传来的消息。它...

    基于Java的Socket多客户端Client-Server聊天程序的实现

    主要介绍了基于Java的Socket多客户端Client-Server聊天程序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    SocketClient-Server

    SocketClient-Server是一个基于Java实现的简单客户端-服务器通信模型,它展示了如何使用Socket编程进行网络数据传输。在Java中,Socket是TCP/IP协议的一种实现,允许两台计算机通过网络进行双向通信。以下是对这个...

    A-basic-client-server-application-in-java.zip_application java_i

    标题"A-basic-client-server-application-in-java.zip"暗示了我们将会探讨一个基础的Java客户端-服务器应用程序。这个压缩包包含了一个教程(Sockets_Tutorial.html)和两个源代码文件(tcpClient.java和tcpServer....

    用java写socket.io客户端所需jar包

    - 连接到服务器:`Socket socket = IO.socket("http://your-server-url:port");` - 注册事件监听器:例如,`socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {...});` 用于监听连接成功事件。 - 发送和...

    Client-Server-App.zip_between_client

    在这个"Client-Server-App.zip_between_client"中,我们看到的是一段实现客户端与服务器间握手协议的代码示例。下面我们将深入探讨这个应用的核心知识点。 1. **客户端-服务器架构**: 客户端-服务器模型是分布式...

    Java-network-programming-server.zip_java programming_java server

    这就是经典的C/S(Client/Server)模型。 在"服务器.jar"中,很可能包含了一个Java编写的网络服务器程序。这个程序可能实现了TCP或UDP协议,处理来自客户端的连接请求,并进行数据交换。TCP提供的是面向连接的、...

    Android开发,Socket Client端和Socket Server端数据发送和接收

    Socket分为客户端(Socket Client)和服务器端(Socket Server),它们共同构成了基于TCP/IP协议的通信模型。本篇文章将详细探讨Android环境下如何进行Socket Client端和Socket Server端的数据发送与接收。 1. **...

    Telnet-Server-Client.rar_Telnet Server Java_java socket telnet_

    本资源"Telnet-Server-Client.rar"包含了一个用Java实现的`Telnet`服务器和客户端,这对于理解网络编程和`Socket`通信具有很高的学习价值。 首先,我们要了解`Java`中的`Socket`编程。`Socket`是网络通信的基础,它...

    socket.io-client:Java语言的Socket.io客户端实现

    该存储库包含用Java语言编写的Socket.IO客户端实现。 如果您不了解socket.io,则它基本上是一个旨在提供实时,双向和基于事件的通信的框架。 您可以访问以了解更多信息。 安装 您可以使用以下方法安装该库: Maven ...

    Java Socket实例(Server+Client)

    下面将详细解释Java Socket的工作原理、如何创建Server和Client以及如何在两个端点之间传递数据。 1. **Java Socket基础** Java Socket基于TCP/IP协议,提供了低级别的、面向连接的、可靠的字节流通信。它允许两个...

    socket-java-demo-good.rar_Follow_ Follow_easy socket

    通常,一个完整的Java Socket示例项目会包含多个文件,如`Server.java`(服务器端)、`Client.java`(客户端)以及可能的配置或测试文件。这些文件将展示如何设置Socket连接、处理数据传输,以及优雅地关闭连接。 ...

    Based-on-the-TCP-client-and-server.rar_TCP中转_The Client_java Tcp

    标题中的“Based-on-the-TCP-client-and-server.rar_TCP中转_The Client_java Tcp”表明这是一个关于TCP协议的项目,特别关注TCP中转功能,客户端(The Client)是用Java语言实现的。这个项目可能涉及创建一个服务器...

Global site tag (gtag.js) - Google Analytics