socket示例代码演示程序(螺纹)
2024-09-01 20:05:41
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();
}
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
最新文章
- C#中Split用法
- sublime 编译运行C程序
- CocoaPods的版本升级
- Django基础,Day10 - template 模板引擎与路径设置
- blob storage第一次亲密接触
- 最大密集子图(01分数规划+二分+最小割)POJ3155
- hdu 4604 Deque
- JAVA 方法或者类的注释快捷键
- 转载Expression Tree揭秘
- CC_CALLBACK原理及应用
- 全面认识网络诊断命令功能与参数——netsh diagnostic命令
- Jquery 常用总结
- Android 点击事件,4种回调。
- 在Thinkphp3.2 中使用PHPMailer 发送邮件
- 【动态规划】XMU 1560 新ACM规则
- [Python笔记]第一篇:基础知识
- bzoj 2120 带修改莫队
- Davinci DM6446开发攻略——LINUX GPIO驱动源码移植
- 开放数据接口 API 简介与使用场景、调用方法
- inetd的工作流程
热门文章
- 间隔DP基础 POJ2955——Brackets
- HDU 4337 King Arthur&;#39;s Knights 它输出一个哈密顿电路
- Java乔晓松-android中获取图片的缩略图(解决OutOfMemoryError)内存溢出的Bug
- php:修改NetBeans默认字体
- 取证学习资料DVD
- Dubbo-Admin管理平台和Zookeeper注册中心的搭建(转)
- POJ 1905-Expanding Rods(二分法+计算几何)
- unity3d插入Daikon Forge GUI 中国课程-7-高级控制slider采用
- c#错误捕获如何定位到某一行?
- js多物体任意值运动