Java Socket通信之客户端服务端交互聊天案例
2016-10-20 08:49
357 查看
服务端接收客户端发送过来的数据,并打印在控制台上。
Tcp传输,客户端建立的过程。1,创建服务端socket服务。通过ServerSocket对象。
2,服务端必须对外提供一个端口,否则客户端无法连接。
3,获取连接过来的客户端对象。
4,通过客户端对象获取socket流读取客户端发来的数据并打印在控制台上。
服务端代码
import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * Created by yuandl on 2016-10-17. * 服务端接收客户端发送过来的数据,并打印在控制台上。 */ public class Server { static ServerSocket serverSocket = null; public static void main(String[] args) { try { //1创建服务端对象。 serverSocket = new ServerSocket(8868); //2,获取连接过来的客户端对象。 Socket socket = serverSocket.accept(); System.out.println("来自客户端【" + socket.getInetAddress().getHostAddress() + "】的连接"); BufferedReader bufferedReader = null; BufferedReader bufferedReader_SystemIN = null; BufferedWriter bufferedWriter = null; //3,通过socket对象获取输入流,要读取客户端发来的数据 bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); //4,通过字符输入流获取键盘输入,要读取控制台写给客户端的数据 bufferedReader_SystemIN = new BufferedReader(new InputStreamReader(System.in)); //5.使用客户端socket对象的输出流给客户端返回数据 bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String message = ""; while ((message = bufferedReader.readLine()) != null) { System.out.println("来自客户端【" + socket.getInetAddress().getHostAddress() + "】说:" + message); System.out.print("请输入:"); String s = bufferedReader_SystemIN.readLine(); bufferedWriter.write(s); bufferedWriter.newLine(); bufferedWriter.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
客户端发数据到服务端
Tcp传输,客户端建立的过程。1,创建tcp客户端socket服务。使用的是Socket对象。建议该对象一创建就明确目的地。要连 接的主机。
2,如果连接建立成功,说明数据传输通道已建立。该通道就是socket流 ,是底层建立好的。 既然是流,说明这里既有输入,又有输出。想要输入或者输出流对象,可以找Socket来获取。可以通过getOutputStream(),和getInputStream()来获取两个字节流。
3,使用输出流,将数据写出。
4,关闭资源。
客户端代码
import java.io.*; import java.net.Socket; /** * Created by yuandl on 2016-10-17. * 客户端发数据到服务端 */ public class Client { public static void main(String[] args) { Socket socket = null; BufferedReader bufferedReader = null; BufferedReader bufferedReader_Server = null; BufferedWriter bufferedWriter = null; try { //1,创建socket客户端对象。 socket = new Socket("127.0.0.1", 8868); //2,获取键盘录入。获取控制台用户输入的信息 bufferedReader = new BufferedReader(new InputStreamReader(System.in)); //3,socket输入流。读取服务端返回的数据 bufferedReader_Server = new BufferedReader(new InputStreamReader(socket.getInputStream())); //4,socket输出流。将控制台信息数据输出给服务端 bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); System.out.print("请输入:"); String message = ""; while ((message = bufferedReader.readLine()) != null) { bufferedWriter.write(message); bufferedWriter.newLine(); bufferedWriter.flush(); String getMessage = bufferedReader_Server.readLine(); System.out.println("来自服务器说:" + getMessage); System.out.print("请输入:"); } } catch (IOException e) { e.printStackTrace(); } finally { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
运行效果
先运行服务端,再运行客户端相关文章推荐
- 利用TCP和多线程实现服务端和多个客户端建立实时聊天小案例
- 更改课堂案例功能,实现即时通信功能,即两个客户端进行文字聊天。
- 写一个Tomcat+Okhttp实现的聊天websocket聊天框架(一)-- 完成客户端和服务端的通信
- 仿QQ聊天程序SOCKET编程服务端与客户端,成功通信
- 基于Java Socket客户端、服务端聊天雏形
- java socket 客户端和服务端通信
- C# SOCKET编写的简单聊天通信程序(客户端+服务端)
- socket服务端和客户端数据通信 数据交互
- Java Socket简单实现客户端与服务端通信
- java socket 服务端与客户端聊天
- Java Socket客户端与C#服务端的通信
- java socket 客户端和服务器端互相通信(聊天)
- Socket编程服务端和客户端互相通信,实现简单的聊天
- Android笔记: Android后台接口教程二Android 客户端与服务端交互Android 前后台通信 post方式
- Android与PHP交互:客户端用HTTP协议与服务端通信
- java socket 客户端和服务器端互相通信(聊天)
- java网络编程之服务端客户端socket简单通信案例
- android客户端与服务端交互的三种方式
- socket服务端和客户端通信
- java socket的小例子(服务端与客户端)