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.使用 ...
随机推荐
- 一些Android框架
从网上收集一些框架,敲代码偷懒这些框架非常实用,必须记下来,为了以后少写代码,用别人好的框架 ThinkAndroid ThinkAndroid(一个ThinkAndroid教程地址:http://m ...
- oracle一个用户密码管理多达同意三次企图登录
假设一个用户登录连续失败三次.两日,锁定用户,两天后再次登录的用户的能力. 创建profile文件: 更新账户: 三次登录失败后用户就会被锁定: 用户锁住之后要怎么给他解锁: 解锁之后就能够正常登录了 ...
- js日期天数差
var s1 = "2007-01-01"; var s2 = "2007-12-31"; s1 = s1.replace(/-/g, "/" ...
- Java / Android 基于Http的多线程下载的实现
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/26994463 有个朋友需要个多线程现在的例子,就帮忙实现了,在此分享下~ 先说下 ...
- LeerCode 123 Best Time to Buy and Sell Stock III之O(n)解法
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- 80x86汇编小站站长简单介绍-2014年08月23日
[序言] 旧版的"80x86汇编小站站长简单介绍"已经过时了, 因此于2013年10月01日花费1个小时又一次更新和排版一次. [人生格言] 1] 一生都用头脑而不是情绪解决这个 ...
- 8皇后-----回溯法C++编程练习
/* * 八皇后问题回溯法编程练习 * 在8×8的棋盘上,放置8个皇后,两个皇后之间不能两两攻击 * 也即,直线,垂直45度.135度方向不能出现两个皇后 * * copyright Michael ...
- win7/win8通过媒体流(DLNA技术)共享音乐照片和视频
http://www.jb51.net/os/windows/79421.html 工具/原料 Windows 7/8/10家庭高级版以上版本 家庭WiFi局域网(无须连接互联网) 支持DLNA的手机 ...
- JavaScript对象(来自百度知道)
JavaScript中对象的创建有以下几种方式: (1)使用内置对象(2)使用JSON符号(3)自定义对象构造 一.使用内置对象 JavaScript可用的内置对象可分为两种:1,JavaScript ...
- UVA - 12338 Anti-Rhyme Pairs (哈希)
Description D Anti-Rhyme Pairs Input: Standard Input Output: Standard Output Often two words that rh ...