`

Java Socket 服务端与客户端通讯

 
阅读更多
Server.java
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

	/** 端口号 */
	public static final int PORT = 8000;

	public static void main(String[] args) {
		System.out.println("服务器启动...\n");
		Server ser = new Server();
		ser.sock();
	}

	public void sock() {
		try {
			ServerSocket server = new ServerSocket(PORT);
			while (true) {
				// 一旦有堵塞, 则表示服务器与客户端获得了连接
				Socket client = server.accept();
				// 处理这次连接
				new PServer(client);
			}
		} catch (Exception e) {
			System.out.println("服务器异常: " + e.getMessage());
		}
	}

	private class PServer implements Runnable {

		private Socket socket;

		public PServer(Socket sock) {
			socket = sock;
			new Thread(this).start();
		}

		public void run() {
			try {
				// 读取客户端数据
				DataInputStream input = new DataInputStream(socket.getInputStream());
				// 向客户端发送数据
				DataOutputStream out = new DataOutputStream(socket.getOutputStream());
				
				// 读取客户端数据
				System.out.println("客户端发过来的内容: " + input.readUTF());

				System.out.print("请输入: \t");
				// 发送键盘输入的一行
				String s = new BufferedReader(new InputStreamReader(System.in)).readLine();
				out.writeUTF(s);

				input.close();
				out.close();
			} catch (Exception e) {
				System.out.println("服务器 run 异常: " + e.getMessage());
			}
		}

	}

}


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

public class Client {
	
	/** 端口号 */
	public static final int PORT = 8000;
	
	/** ip 地址 */
	public static final String IP = "localhost";
	
	public static void main(String[] args) {
		System.out.println("客户端启动...");
		Socket socket = null;
		try {
			System.out.println("当接收到服务器端字符为 \"好\" 的时候, 客户端将终止\n");
			while (true) {
				// 创建一个流套接字并将其连接到指定主机上的指定端口号
				socket = new Socket(IP, PORT);
				
				// 读取服务器端数据
				DataInputStream input = new DataInputStream(socket.getInputStream());
				// 向服务器端发送数据
				DataOutputStream out = new DataOutputStream(socket.getOutputStream());

				System.out.print("请输入: \t");
				String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
				out.writeUTF(str);
				
				String ret = input.readUTF(); 
				System.out.println("服务器端返回过来的是: " + ret);
				// 如接收到 "好" 则断开连接
				if ("好".equals(ret)) {
					System.out.println("客户端将关闭连接");
					Thread.sleep(500);
					break;
				}
			}
		} catch (Exception e) {
			System.out.println("客户端异常: " + e.getMessage());
		} finally {
			if (socket != null) {
				try {
					socket.close();
				} catch (Exception e) {
					socket = null;
					System.out.println("客户端 finally 异常: " + e.getMessage());
				}
			}
		}
	}

}
分享到:
评论

相关推荐

    java编写socket服务端和客户端给予cmpp3.0

    Java 编写基于 CMPP3.0 的 Socket 服务端和客户端是移动通讯领域中常见的技术实践,主要用于实现与移动运营商的短信网关进行数据交互。CMPP(China Mobile Short Message Peer-to-Peer)是中国移动制定的一种短消息...

    java socket服务端和客户端

    在这个"java socket服务端和客户端"的项目中,我们可以探讨以下几个关键知识点: 1. **Socket类和ServerSocket类**: - `Socket`类代表了网络上的一个连接,它用于建立客户端到服务器的连接,并进行数据传输。通过...

    Socket服务端与客户端通讯

    博客文章"Socket服务端与客户端通讯"应该会详细讲解这些概念,并提供具体的代码示例,如Java或Python等编程语言的实现。通过阅读这篇文章,你可以更深入地理解Socket通信的工作原理,并学会如何应用到一对一聊天系统...

    java基于socket服务端向客户端推送信息案例.rar

    java基于socket服务端向客户端推送信息,反向消息推送,登录上线提示。java基于socket服务端向客户端推送信息,反向消息推送,登录上线提示。

    Socket服务端客户端以tcp/ip协议发送接收报文

    本教程将详细讲解如何利用Java Socket实现基于TCP/IP的服务端和客户端之间的报文发送与接收。 TCP(传输控制协议)是一种面向连接、可靠的传输协议,它确保了数据包的有序和无损传输。IP(互联网协议)则是互联网上...

    java socket长连接客户端服务端(标准实例)

    ### Java Socket 长连接客户端和服务端实现 在Java中,使用Socket进行网络通信是一种非常常见的技术手段。本文将详细解读“Java Socket长连接客户端服务端(标准实例)”的相关知识点,包括其实现原理、代码解析及...

    j2me socket 服务端与 客户端聊天

    本项目 "j2me socket 服务端与 客户端聊天" 展示了如何利用 Socket 技术创建一个简单的聊天应用,使手机能够与服务器进行交互。 **一、J2ME Socket 客户端** 1. **创建 Socket 连接**:客户端首先需要通过 `java...

    java_socket服务端和客户端编程

    Java Socket服务端与客户端编程是Java网络编程中的基础部分,主要用于实现两台计算机之间的通信。在本场景中,客户端向服务器发送一个字符串,服务器接收到这个字符串后将其转化为大写并回显。以下是对这个过程的...

    socket服务端和客户端完整代码

    socket分为socketserver和socketclient,socketserver是一个简单的建立长连接后等待接收数据,socketclient请求建立与服务端连接,连接建立以后通过servlet发起通信。 服务端直接用application执行; 客户端部署到...

    基于Android的简单Socket服务端与客户端

    在这个项目中,"基于Android的简单Socket服务端与客户端"实现了两个Android应用程序:一个作为服务端,另一个作为客户端,它们通过Socket进行数据交换。 首先,我们要理解Socket的工作原理。Socket是网络编程的基本...

    Netty实现Java服务端和C#客户端联通

    标题中的“Netty实现Java服务端和C#客户端联通”是指使用Netty作为Java服务器框架,与C#客户端(使用DotNetty库)进行通信的一种技术实现。这涉及到跨平台的网络通信,以及两个不同编程语言间的交互。 Netty是Java...

    tcp.rar_java socket 服务端_java tcp socket_服务端 客户端

    3. 当客户端连接时,`accept()`返回一个新的`Socket`对象,代表与客户端的连接。 4. 通过`Socket`对象的`getInputStream()`和`getOutputStream()`获取输入流和输出流,分别用于读取客户端的数据和向客户端发送数据。...

    自己写的Java Socket服务端

    Java Socket服务端是一种基于TCP/IP协议的网络通信方式,它允许服务器端与多个客户端进行双向通信。在Java中,Socket编程提供了低级别的、基于字节流的通信原语,是构建分布式应用程序的基础。本项目是一个自己编写...

    Socket服务端与客户端通信实例

    在本实例中,我们将深入探讨Socket服务端与客户端的通信过程,了解其基本原理和应用。 首先,Socket是Internet协议族的一部分,它为应用程序提供了低级别的网络通信接口。在TCP/IP模型中,Socket位于传输层,可以...

    java_socket服务端和客户端编程.doc

    Java Socket服务端和客户端编程是Java网络编程中的核心部分,主要涉及TCP/IP协议栈和客户机/服务器(C/S)架构。TCP/IP协议是互联网通信的基础,它由多个层次组成,其中IP层负责主机定位和路由,而TCP层提供可靠的...

    java tcp服务端和客户端

    每当有新的客户端连接时,`accept()`方法都会返回一个新的`Socket`对象,代表与该客户端的连接。 3. **数据交换**: 一旦客户端连接,就可以通过`Socket`对象的`InputStream`和`OutputStream`进行数据的读写。`...

    Java Socket服务端客户端例程

    通过构建服务端和客户端来展示Socket通信程序的一般实现框架,本程序使用了最基本的Socket及连接池、线程及线程池等,程序简单易理解,适合Java基础学习的同学学习参考,如果读者需要在自己的业务中使用此框架进行...

Global site tag (gtag.js) - Google Analytics