Java - socket双向通信例子
2015-10-20 07:25
363 查看
服务端
客服端
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Server_1 { public static void main(String[] args) { InputStreamReader isr; BufferedReader br; OutputStreamWriter osw; BufferedWriter bw; String str; Scanner in = new Scanner(System.in); try { ServerSocket server = new ServerSocket(4444);// 在本机的4444端口开放Server Socket socket = server.accept();// 只要产生连接,socket便可以代表所连接的那个物体,同时这个server.accept()只有产生了连接才会进行下一步操作。 System.out.println(socket.getInetAddress());// 输出连接者的IP。 System.out.println("建立了一个连接!"); while (true) { isr = new InputStreamReader(socket.getInputStream()); br = new BufferedReader(isr); System.out.println(socket.getInetAddress() + ":" + br.readLine()); osw = new OutputStreamWriter(socket.getOutputStream()); bw = new BufferedWriter(osw); System.out.print("回复:"); str = in.nextLine(); bw.write(str + "\n"); bw.flush(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
客服端
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Client_1 { public static void main(String[] args) { InputStreamReader isr; BufferedReader br; OutputStreamWriter osw; BufferedWriter bw; String str; Scanner in = new Scanner(System.in); try { Socket socket = new Socket("localhost", 4444); // System.out.println(socket.getInetAddress());// 输出连接者的IP。 System.out.println("成功连接服务器"); while (true) { osw = new OutputStreamWriter(socket.getOutputStream()); bw = new BufferedWriter(osw); System.out.print("回复:"); str = in.nextLine(); bw.write(str + "\n"); bw.flush(); isr = new InputStreamReader(socket.getInputStream()); br = new BufferedReader(isr); System.out.println(socket.getInetAddress() + ":" + br.readLine()); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- 【转】mac x Yosemide(10.10) 下安装 jdk 1.7 (jdk 1.8) 要求Mac OS X10.7.3或更高版本解决
- java 虚拟机的生命周期
- java学习之浅谈多线程2--线程同步
- 【转】Java基础:System.out.println与System.err.println的区别
- JavaCC的基本使用
- Java反射API研究(4)——Class中的重要对象
- maven 搭建 springmvc + jpa +mysql
- 传统AOP手动代理模式(JDK+CGLIB)----->传统的底层实现
- Spring中的工厂
- spring入门步骤
- Spring属性注入DI
- Spring的Bean管理(XML方式)
- Java IO 之 介质流
- Java IO
- Java基础--多线程
- java 优化-单例模式
- java 基础-序列化问题
- javaI/O
- Spring入门到精通<三>Spring访问数据库
- Maven3仓库与配置