好久没有接触socket网路编程了,查快要把最基础的都忘记了,今天,写个Server,Client回顾一下。
Server端代码:
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 SecServer {
public static final int PORT =10000;
public static void main(String[] args) {
System.out.println("服务器:\n");
SecServer server = new SecServer();
server.service();
}
public void service() {
try {
ServerSocket server = new ServerSocket(PORT);
while (true) {
// 等待接收客户端连接
Socket client = server.accept();
new ThreadServer(client);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private class ThreadServer implements Runnable {
private Socket socket;
public ThreadServer(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) {
e.printStackTrace();
}
}
}
}
客户端代码:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class SecClient {
public static final int PORT = 10000;
public static final String IP = "localhost";
public static void main(String[] args) {
System.out.println("客户端:\n");
Socket socket = null;
try {
System.out.println("当客户端接收到\"exit\" 的时候,将与服务器断开\n");
while (true) {
// 将socket连接到指定主机上的指定端口号
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);
System.out.println("服务器端返回过来的是: " + ret);
// 如接收到 "exit" 则客户端将于服务器端断开
if ("exit".equals(input.readUTF())) {
System.out.println("客户端退出");
//Thread.sleep(500);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (Exception e) {
socket = null;
e.printStackTrace();
}
}
}
}
}
先启动服务端,在启动客户端,可实现客户、服务对话。
分享到:
相关推荐
在Java中,Socket编程是实现网络通信的基本手段,它允许应用程序之间通过网络进行数据交换。本文将详细探讨Java Socket网络编程中的关键知识点。 首先,我们回顾一下网络通信的发展历史。通信技术的发展经历了从...
在深入探讨文件传输之前,我们先简要回顾一下Java Socket的基础概念。Socket是一种允许不同计算机间通信的技术,它为应用程序提供了一个低层的网络通信接口。在Java中,Socket API提供了丰富的类库支持,使得开发...
Java Socket编程是Java网络编程中的重要组成部分,它允许两台计算机通过网络进行通信。Socket在计算机网络中扮演着客户端和服务器的角色,使得应用程序能够发送和接收数据。本篇内容将深入探讨Java Socket编程的基础...
Java基于Socket编写的聊天室程序是一种典型的客户端-服务器(C/S)架构的应用,它利用了Java的网络编程能力,特别是Socket类,来实现用户之间的实时通信。在这个程序中,Server.jar是服务器端程序,它监听特定的端口...
### Java Socket 编程详解(IBM) #### 一、引言 Java Socket 是一项重要的技术,用于实现网络中不同计算机间应用程序的通信。本篇文章基于IBM的资源,深入介绍了Java Socket 的基本概念、应用场景以及实际编程技巧...
这篇博客“Java网络编程回顾”可能涵盖了Java进行网络通信的基础知识、关键类库和实用技巧。让我们一起深入探讨Java在网络编程中的核心概念。 在Java中,网络编程主要依赖于`java.net`和`java.nio`包。`java.net`包...
在C++或Java等语言中,可以使用socket()函数创建一个Socket对象。例如,在C++中: ```cpp int socket_fd = socket(AF_INET, SOCK_STREAM, 0); ``` 这里的`AF_INET`代表IPv4地址家族,`SOCK_STREAM`表示使用TCP协议...
在深入了解文件传输之前,我们先简要回顾一下 Socket 的基础知识。Socket 是一种用于网络通信的机制,它使得不同计算机上的应用程序能够通过网络互相通信。在 Java 中,主要使用 `java.net.Socket` 和 `java.net....
7. **网络编程**:Java的Socket编程用于实现客户端-服务器通信,理解TCP和UDP的区别,以及如何创建和使用套接字是面试中可能涉及的内容。 8. **设计模式**:设计模式是解决常见软件设计问题的模板,例如单例模式、...
本文将通过一个简单的 Java TCP 通信示例来详细介绍如何利用 Java 的 `ServerSocket` 和 `Socket` 类来搭建一个基本的服务器-客户端模型。 #### 二、基础知识回顾 ##### 2.1 ServerSocket 类 `ServerSocket` 类是...
在了解`Android-Lemon`之前,我们先来回顾一下Android中的Socket通信基础。Socket是网络编程中的一个重要概念,它是两台计算机间进行双向通信的端点。在Android中,我们可以使用`java.net.Socket`类进行Socket编程,...
2. **Socket通信**:Java的Socket类提供了客户端-服务器通信的基础,用于建立连接并传输数据。 3. **GUI设计**:使用Java Swing或JavaFX创建用户界面,展示聊天窗口、输入框和发送按钮。 4. **文本解析**:可能...
在Java中,TCP通信通常通过Socket类和ServerSocket类来实现。如代码所示,`SimpleTcpClient`类创建了一个Socket实例,与服务器进行连接,并通过`BufferedReader`和`PrintWriter`进行数据交换。服务器端的`SimpleTcp...
这些题目涵盖了Java基础到进阶的多个方面,通过逐一解决,开发者可以系统地回顾和巩固Java知识,同时也能提升实际项目开发中的问题解决能力。对于每个类,阅读源码、理解其实现逻辑并尝试自己动手实现,是提高编程...
Java开发实战经典课后习题答案涉及到Java编程语言的多个基础知识点,这些知识点对于初学者和...对于已经有一定基础的开发者,通过回顾这些基础内容,可以巩固其基础知识,同时复习和掌握一些Java编程中较为复杂的内容。
在Java中实现P2P文件传输,可以使用Socket编程来创建两个或多个节点之间的连接,允许数据的双向流动。这通常涉及到TCP或UDP协议的选择,TCP保证数据的可靠传输,UDP则提供更高的传输速度但不保证数据的顺序或完整性...
首先,01-Java语言基础.ppt这部分内容将引导学习者回顾或建立Java编程的基础,包括语法、类、对象、异常处理等核心概念,这是学习网络编程的基石。理解这些基础知识,能帮助开发者编写出稳定、可维护的网络程序。 ...
这本《Think Java》不仅适合初学者,也适合有一定经验的开发者回顾基础,提升对Java的理解。通过阅读这本书,读者可以全面掌握Java编程,并具备解决实际问题的能力。无论是在PC、手机还是Kindle上阅读,都能获得良好...
- Java支持TCP/IP协议,可以通过`java.net.Socket`和`java.net.ServerSocket`类进行客户端和服务端的通信。 #### 三、远程文件对接技术要点 1. **客户端与服务端设计**: - 客户端负责发起连接请求,发送文件或...