socket示例代码演示程序(螺纹)
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();
}
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
socket示例代码演示程序(螺纹)的更多相关文章
- C# WebSocket 服务端示例代码 + HTML5客户端示例代码
WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System.Linq; using System. ...
- python开源项目及示例代码
本页面是俺收集的各种 Python 资源,不定期更新. 下面列出的各种 Python 库/模块/工具,如果名称带超链接,说明是第三方的:否则是 Python 语言内置的. 1 算法 1.1 字符串处理 ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
- C#异步Socket示例
C#异步Socket示例 概要 在C#领域或者说.net通信领域中有着众多的解决方案,WCF,HttpRequest,WebAPI,Remoting,socket等技术.这些技术都有着自己擅长的领域, ...
- 看完48秒动画,让你不敢再登录HTTP网站(附完整示例代码)
在我的 单点登录SSO示例代码 一文中,强烈不建议部署HTTP的SSO服务站点. 在此写个基于网络包嗅探的HTTP会话劫持程序,给大家一个直观的危害性展示. 示例中,我在一台Mac上登录58同城,被另 ...
- python开源项目及示例代码(转)
本页面是俺收集的各种 Python 资源,不定期更新. 下面列出的各种 Python 库/模块/工具,如果名称带超链接,说明是第三方的:否则是 Python 语言内置的. 1 算法 1.1 字符串处理 ...
- 网络传输 buf 封装 示例代码
网络传输 buf 封装 示例代码 使用boost库 asio // BufferWrapTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h&quo ...
- netty-socketio 示例代码
socket.io是一个不错的websocket项目,github上有它的java实现:netty-socketio 及 示例项目 netty-socketio-demo,基本上看看demo示例项目就 ...
- MySQL 数据备份与还原的示例代码
MySQL 数据备份与还原的示例代码 这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 一.数据备份 1.使用 ...
随机推荐
- C++出现计算机术语5
class template(类模板) 可以用来定义一个类定义了一组特定类型的类的.类模板template keyword其次是尖括号(<>)附上.的列表来定义. export keywo ...
- 对HGE游戏引擎的一次封装
HGE游戏引擎是一个开源2D游戏引擎,基于directX. 它的渲染及逻辑是基于帧回调的框架模式, 其提供一些主要的图像操作和输入控制功能. 我在之前写一个2D游戏的时候对它整个框架进行了一次封装,非 ...
- Android在浏览器启动APP
要想在浏览器启动APP的方法例如以下: 在须要跳转的ACTIVITY中加入intent-filter的相关信息: <intent-filter> <data android: ...
- codeforces #256 A. Rewards
A. Rewards time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- C3P0在多线程下的maxPoolSize配置
ETL工具完毕的差点儿相同了.今天遇到一个问题.就是给C3P0配置了maxPoolSize为10.目的是想让整个应用同一时候获得的最大的Connection个数为10,可是在測试应用的这一部分之后,发 ...
- 【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握
内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主 ...
- WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现
原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系 ...
- Java误区: 静态代码块,当把类将被载入到自己主动运行?
JAVA静态代码块会在类被载入时自己主动运行? 非常多Java开发人员的思想,被这个思想深深的轮奸了n遍,传播这个错误思想的博客,在网上一堆,越来越多的人被轮奸. 如:http://blog.csdn ...
- Linux之父:除了写内核代码 别的真不会(转)
Linus Torvalds 是 Linux 之父,被誉为活着的传奇. 其实很多人不了解他也并不奇怪,因为人是在是太低调了.现年 46 岁的他每天的工作仍然是编程,领导并推动着 Linux 的发展. ...
- 在高德地图应用api,和api展出的标记小的应用程序
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...