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.使用 ...
随机推荐
- UIPinchGestureRecognizer 的scale使用
使用 UIPinchGestureRecognizer 手势可以放大或缩小UIImageView视图.放大或缩小的值是根据 UIPinchGestureRecognizer 的scale决定.这个值在 ...
- Objective-C类的使用
Objective-C教程的例题: // // main.m // test // // Created by liwei on 14-10-28. // Copyright (c) 2014年 li ...
- C++经典面试题(二)
近期看一些面试题,认为假设自己被问到了,并不能非常利落的回答出来. 一是从来没有这个意识,二是没有认真的梳理下. 以下对这些题做出分析,哈!个人能力有限,当中难免有疏漏,欢迎大家补充咯. 11.引用与 ...
- POJ 3264-Balanced Lineup(段树:单点更新,间隔查询)
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 34522 Accepted: 16224 ...
- Form表单中的action路径问题
今天刚接触web,在用jsp和servlet做一个简单的登陆的时候在Form表单action属性和method属性的一些问题: 我遇到的是Form表单提交到servelet处理时遇到的问题: (1 ...
- 解决android3.0版本号以上应用接收不到开机广播问题
如今是2014-07-16 下午15:27. 好久没写过东西,突然间灵感喷发想写点东西(事实上是刚刚弄好了一个棘手的问题,自豪中..呵呵呵呵 我牛掰).废话不多说,进入正题. 不知道你们又没有碰到这问 ...
- android下获取无线wif信号、ssid、MAC等操作类
一个android下获取无线wif信号.ssid.MAC等操作的类. WifiAdmin.java package com.afu; import java.util.List; import and ...
- A*算法进入
作者文章链接:http://www.policyalmanac.org/games/aStarTutorial.htm 启示式搜索:启示式搜索就是在状态空间中的搜索对每个搜索的位置进行评估,得到最好的 ...
- IT忍者神龟之使用 PowerDesigner
1. 启动 PowerDesigner 新建物理数据模型 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmlweWhk/font/5a6L5L2T/fon ...
- CentOS构造SNMP
<span style="font-size:14px;">本文介绍怎样在CentOS环境下配置一个简单的SNMP服务</span> 软件安装 切换到系统管 ...