socket示例代码演示程序(螺纹)
2015-08-11 11:03
183 查看
client码,如以下:
import java.io.*; import java.net.*; public class DailyAdviceClient { public void go(){ try { Socket s=new Socket("127.0.0.1",4242);//建立对server的Socket连接 //client从server读取数据 //建立连接到socket上低层输入串流的InputStreamReader //InputStreamReader是低层和高层串流间的桥梁 //s.getInputStream()从Socket取得输入串流 InputStreamReader streamReader=new InputStreamReader(s.getInputStream()); //建立BufferedReader来读取 BufferedReader reader=new BufferedReader(streamReader); String adviceString=reader.readLine(); System.out.println("Today you should: "+adviceString); //client向server发送数据 //创建不带自己主动行刷新的PrintWriter对象。 //假设加入第二个參数true,则为自己主动刷新,不须要写writer.flush()这行代码 PrintWriter writer=new PrintWriter(s.getOutputStream()); writer.println("Hello,I am Client2!"); writer.flush();//刷新发送数据 System.out.println("此套接字连接的远程地址:"+s.getInetAddress().getHostAddress()); System.out.println("此套接字绑定的本地地址:"+s.getLocalAddress().getHostAddress()); System.out.println("此套接字绑定的本地端口:"+s.getLocalPort()); System.out.println("此套接字连接到的远程端口:"+s.getPort()); s.close();//关闭socket } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[]args){ DailyAdviceClient client=new DailyAdviceClient(); client.go(); } }server端代码例如以下:
import java.io.*; import java.net.*; public class DailyAdviceServer { String[] adviceList={"Take smaller bites","One word: inappropriate","" + "Just for today,be honest","Tell your boss"}; public void go(){ try { //服务器应用程序对特定port创建出ServerSocket对象 //这会让服务器应用程序监听来自4242port的client请求 ServerSocket serverSocket=new ServerSocket(4242); //服务器进入无穷循环等待client的请求 while(true){ System.out.println("等待client连接..."); //接收到用户连接请求后。此方法会返回一个socket。以便于client通信 //此socket的port号和serverSocket的port号不同 Socket sock=serverSocket.accept();//此方法会堵塞直到有连接请求到达 System.out.println("此套接字连接的地址:"+sock.getInetAddress().getHostAddress()); System.out.println("此套接字绑定的本地地址:"+sock.getLocalAddress().getHostAddress()); System.out.println("此套接字绑定的本地port:"+sock.getLocalAddress()); System.out.println("此套接字连接到的远程port:"+sock.getPort()); //服务器向client发送数据 PrintWriter writer=new PrintWriter(sock.getOutputStream()); String adviceString=getAdvice(); writer.println(adviceString); writer.flush(); System.out.println(adviceString); //服务器接收client发送的数据 InputStreamReader streamReader=new InputStreamReader(sock.getInputStream()); BufferedReader reader=new BufferedReader(streamReader); String adviceStringREC=reader.readLine(); System.out.println("REC: "+adviceStringREC); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String getAdvice(){ int random=(int)(Math.random()*adviceList.length); return adviceList[random]; } public static void main(String []args){ DailyAdviceServer server=new DailyAdviceServer(); server.go(); } }
相关文章推荐
- [leetcode-101]Symmetric Tree(c++)
- ruby 编辑中文注释 报错
- 源代码解读Cas实现单点登出(single sign out)功能实现原理
- Qt 5.3 下OpenCV 2.4.11 开发(11)CamShift 目标跟踪
- PHP学习总结(二)
- 对Spring框架思想中依赖注入的理解
- 使用 XHProf 分析你的 PHP 程序
- 二维码(Logo)工具类
- 多线程2(java基础)
- spring事务管理几种方式
- java动态代理类
- 在phpmyadmin已经写好的数据库如何上传到数据库
- 事务回滚、MVC设计模式(编程思想,便于对代码的管理)
- Eclipse Java注释模板设置详解
- 利用C语言来求最大连续子序列乘积的方法
- python正则表达式 re (二)匹配对象和组
- 代码重构
- 如何在Ubuntu 14.04中安装最新版Eclipse
- 编程小技巧
- PHP面向对象(OOP):把对象串行化serialize()方法,__sleep()方法,__wakeup()方法