一个客户端,一个服务端,客户端可以发消息到服务端
客户端代码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(); } } } } }
相关推荐
Socket programming using java
SocketClient-Server
Java Socket 模拟 Ftp Server/Client
主要介绍了基于Java的Socket多客户端Client-Server聊天程序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
为TCP/IP socket通信的实现源码,包含Client端和Server端程序,绝对好用
Java Socket实例(Server+Client),分别运行这两个实例,就可以在Client端输入字符,查看在Server端实时接收的字符
java -jar http-server-version-{version}.jar 源码编译 http: 编译源码并运行src/org/kaipan/www/socket/http/HttpServer.java https: 编译源码并运行src/org/kaipan/...
a TelNet server coded in JaVa.
Java-客户端-服务器-套接字程序简单的客户端和服务器套接字代码,其中套接字充当数据泵,创建一串随机数据。 套接字当前设置为端口 8000。有一个计时器运行服务器套接字发送的持续时间,在代码中设置。 数据以逗号...
TCP 协议基础教学代码,一个server 一个 client,client从txt文件里面摘取名人名言语句发给server
仪器控制软件作为XXXX系统的一部分,主要用于实现复杂电磁信号的模拟发生。本软件共设有3个通道,配有任意波形发生器及信号源,可生成的信号主要包括固定点频信号、步进扫频信号、调幅信号、调频信号、数字调制信号...
Java simple socket client server spanish comments
socket编程,客户端与服务器端,计算机网络
Java套接字数据传输使用Java Socket进行一些基本的数据传输(TCP和UDP)。 ###脚步: 客户服务器创建TCP套接字和打印端口号创建TCP套接字并发送req_code(TCP) 接收并检查req_code 创建UDP套接字并将端口号发送...
private Socket client; private BufferedReader in; private PrintWriter out; private String Username; public ServerReaderThread(Socket s) throws IOException { client = s; in = new ...
Java Socket编程 PC端程序 用来传输文件 包括服务器、客户端
Engine.IO客户端Java ...< dependencies> < dependency> < groupId>io.socket</ groupId> < artifactId>engine.io-client</ artifactId> < version>2.0.0</ version> </ dependency></ dependencies> Gradle在build.gr
使用Netty分别实现了三个Socket server和一个socket client: > * server1:9099 主要用来跟硬件传感器通信 > * server2:8888/websocket 作为websocket服务端跟网页通信 > * server2:8889/websocket 跟storm服务做...
使用Java 语言开发Socket Server,实现和android和iOS Socket client通讯的工程代码,数据可以使用TCP或UDP协议,通过文本,XML,Json,Base64及二进制传送,支持中文。