套接字的(客户端与服务器端的连接)
2015-11-07 18:09
190 查看
Client.java文件:
Server.java文件:
import java.io.*; import java.net.*; public class Client { public static void main(String args[]) { String [] mess = {"1+1在什么情况下不等于2", "狗为什么不生跳蚤","什么东西能看、能吃、能坐"};//用String类定义了一个字符串对象数组mess Socket mysocket; DataInputStream in = null; //数据输入流in DataOutputStream out = null; //数据输出流out try { mysocket = new Socket("127.0.0.1", 2010); //Socket类客户端套接字对象mysocket in = new DataInputStream(mysocket.getInputStream()); out = new DataOutputStream(mysocket.getOutputStream()); /* * getInputStream()的返回值是InputStream类对象 * getOutputStream()的返回值是OutputStream类对象 * DataInputStream创建的对象是数据输入流 * DataOutputStream创建的对象是数据输出流 * DataInputStream类继承了InputStream类 比InputStream多了一些方法 * DataOutputStream与上同理 * */ for(int i = 0; i < mess.length; i++) { out.writeUTF(mess[i]);//writeUTF的作用是写入一个字符串 它是DataOutputStream类中的一个方法 //此处是将mess[i]中的字符串写到out对象中 String s = in.readUTF(); //readUTF的作用是读取一个UTF字符串 它是DataInputStream类中的一个方法 返回值是一个字符串的引用 //in 读取信息 ,堵塞状态 System.out.println("客户端收到服务端的回答:"+s); Thread.sleep(500); } } catch(Exception e) { System.out.println("服务器已经断开"+e); } } } //客户端的套接字和服务器端的套接字连接后 //客户端的输出数据流是服务器端的输入数据流 //客户端的输入数据流是服务器端的输出数据流
Server.java文件:
import java.io.*; import java.net.*; public class Server { public static void main(String args[]) { String [] answer = {"在算错的情况下","狗就能生狗","电视、面包、沙发"};//String类定义了一个字符串对象数组answer ServerSocket serverForClient = null; Socket socketOnServer = null; //声明一个临时的套接字 下面要用于接受服务器套接字连接上的客户端的套接字 DataOutputStream out = null; DataInputStream in = null; try { serverForClient = new ServerSocket(2010);//服务器建立了一个ServerSocket对象serverForClient用于与客户端套接字连接起来 //从而达到客户端和服务器端的连接 //记忆方法: //客户端的套接字用Socket类来定义 //服务器端的套接字用ServerSocket类来定义 } catch(IOException e1) { System.out.println(e1); } try { System.out.println("等待客户呼叫"); socketOnServer = serverForClient.accept(); //用临时申请的socketOnServer套接字来接收通过服务器套接字连接上的客户端的套接字 //accept()方法返回客户端的套接字 out = new DataOutputStream(socketOnServer.getOutputStream()); in = new DataInputStream(socketOnServer.getInputStream()); for(int i = 0; i<answer.length; i++) { String s = in.readUTF(); System.out.println("服务器收到客户的提问:"+s); out.writeUTF(answer[i]); Thread.sleep(500); } } catch(Exception e) { System.out.println("客户已经断开"+e); } } } //客户端的套接字和服务器端的套接字连接后 //服务器的输入数据流就是客户端的输出数据流 //服务器的输出数据流就是可独断的输入数据流
相关文章推荐
- 选项卡操作
- AutoMapper(七)
- Webstorm10.0.3破解程序及汉化包下载、Webstorm配置入门指南
- 猴子吃桃问题
- linux 线程栈
- This data item is already used in a primary identifier.的处理
- eclipse开发Groovy代码,与java集成,maven打包编译
- 【iOS】文件下载小记
- hibernate使用list映射,查询出来的list集合包含多个null记录
- 黑马程序员--集合(一)
- 黑马程序员——java基础---集合(下)
- Macbook下MySQL卸载方法
- pulltorefresh上拉加载,没有更多数据的时候显示“加载完成”,不回调刷新接口的实现
- 魅族手机MX4 MX4 Pro 魅蓝note 无法连接USB调试,adb连不上问题的解决
- 工作队列(workqueue) create_workqueue/schedule_work/queue_work
- ViewPager-----为ViewPager页卡设置标题(PagerTabStrip)
- opengl基础学习专题 (二) 点直线和多边形
- 通过spark-redshift工具包读取redshift上的表
- 单例设计模式
- 2014-2015 ACM-ICPC, Asia Tokyo Regional Contest D題:Space Golf [二分+三分+基础数学]