ServerSocket和Socket通讯实例
来源:互联网 发布:网络空间 概念股 编辑:程序博客网 时间:2024/06/05 04:22
整理了JAVA 网络编程的一个“对讲机”式的小实例,采取“一问一答”的方式。首先简介ServerSocket 和 Socket 通讯的过程,下面是一张Socket通信模型的图片。
ServerSocket ss = new ServerSocket(9999);
Socket s1 = ss.accept();
首先,服务器在本机 9999 端口监听,等待客户端的连接。
Socket s2 = new Socket("127.0.0.1",9999);
此时,Socket s2 尝试连接本机的 9999 端口,建立一个通讯的“道路”。
接下来,通过Socket,使用输入输出流发送或接收数据。通讯结束后,关闭Socket连接和各类流。
以下是代码:
import java.net.*;import java.io.*;import java.util.*;/** * @name 服务端 * @author chenyongjun * @time 2013-03-23 * */public class Server {public static void main(String [] args){try {ServerSocket serverSocket = new ServerSocket(8888); // 服务端在本机 8888 端口监听System.out.println("服务器在 8888 端口监听...");Socket socket = serverSocket.accept(); // 等待客户端连接System.out.println("客户端成功连接服务器...");// 获取输入输出流PrintWriter sendMesToClient = new PrintWriter(socket.getOutputStream(),true);BufferedReader readMesFromClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedReader readMesFromConsole = new BufferedReader(new InputStreamReader(System.in));// 进行“对讲机”式通讯while (true){String mesFromClient = readMesFromClient.readLine(); // 读取来自客户端的消息System.out.println("客户端说:" + mesFromClient); // 将读取的消息显示在控制台// 如果客户端说 "bye",结束通话,关闭各类流和Socket,结束 while()循环if (mesFromClient.equals("bye")){ System.out.println("通话结束!"); readMesFromClient.close(); sendMesToClient.close(); readMesFromConsole.close(); socket.close();break; }// 向客户端发送消息System.out.println("请输入你想对客户端说的话");String mesFromConsole = readMesFromConsole.readLine(); // 从控制台输入要发送的消息sendMesToClient.println(mesFromConsole); // 向客户端发送消息sendMesToClient.flush(); }} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
import java.io.*;import java.net.*;public class Client extends Thread{public static void main(String[] args) {try {Socket socket = new Socket("127.0.0.1",8888); // 连接本机 8888 端口上的服务器// 获取输入输出流BufferedReader readMesFromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter sendMesToServer = new PrintWriter(socket.getOutputStream());BufferedReader readMesFromConsole = new BufferedReader(new InputStreamReader(System.in)); // 进行“对讲机”式通讯while(true){// 向服务器发送消息System.out.println("请输入对服务器说的话");String mesFromConsole = readMesFromConsole.readLine();sendMesToServer.println(mesFromConsole);sendMesToServer.flush();// 读取服务器的消息String mesFromSer = readMesFromServer.readLine();System.out.println("服务器说:" + mesFromSer);// 如果服务器说 “bye”,则中断通讯,关闭各类流和Socket,结束while()循环if (mesFromSer.equals("bye")){System.out.println("通话结束!");readMesFromServer.close();readMesFromConsole.close();sendMesToServer.close();socket.close();break;}}} catch (Exception e) {// TODO: handle exception}}}
- ServerSocket和Socket通讯实例
- socket和serversocket,通讯
- Socket和ServerSocket实例
- ServerSocket和ClientSocket控件通讯的实例
- 利用线程使用 ServerSocket 和 Socket 简单双向通讯
- socket和serversocket
- socket和serversocket
- socket和serversocket
- socket和serversocket
- socket和serversocket
- socket和serversocket
- Socket和ServerSocket
- Java Socket和ServerSocket
- serversocket和socket
- Socket和ServerSocket
- Socket和ServerSocket
- [Java]Socket和ServerSocket
- Socket与ServerSocket之间的通讯
- Java I/O流操作(四)---对象的序列化
- const详解
- /bin,/sbin,/usr/sbin,/usr/bin 目录之简单区别
- 裸机S3C6410显示控制器(4)- 显示图像到屏幕
- 第四章 Spring.Net 如何管理您的类___IObjectPostProcessor接口
- ServerSocket和Socket通讯实例
- Web开发人员的6种赚钱之道
- Hibernate 自动创建表的方法
- UVA 10973 - Triangle Counting
- SQLyog-Ultimate-10.4.2中文汉化破解版下载
- copy_to_user和copy_from_user两个函数的分析
- NSIS 脚本的基本语法
- VS2010的一个奇葩报错= =、最后。。。。。。
- VC读取EXE文件的图标并保存