第一步:

建立服务端客户端,实现端到端通信。因为要传递文件,信号量较大,故使用TCP/IP协议。

服务端和客户端都要建立socket,而后通过socket进行通信。目前只实现服务端到客户端的单向通信。

服务端代码如下:

import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket; public class Server { public static void main(String[] args){
//创建服务端socket,用以网络信息的接收
ServerSocket serverSocket = null;
try {
//服务端socket使用本地IP,端口号使用36000
serverSocket = new ServerSocket(36000);
//保证服务端持续运行
while(true){
//接收网络信息,未接收到则阻塞当前线程
Socket socket = serverSocket.accept();
//获取服务端输出流
PrintStream ps = new PrintStream(socket.getOutputStream());
//向输出流中追加信息
ps.append("你好,这里是服务端!");
//关闭输出流和socket
ps.close();
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

客户端代码如下:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket; public class Client { public static void main(String[] args){
BufferedReader reader = null;
Socket socket = null;
try {
//创建客户端socket,用以连接服务端
socket = new Socket("127.0.0.1", 36000);
//读取服务端传来的字节流
reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()) );
//读取字节流中的信息,并以字符串输出
StringBuilder builder = new StringBuilder();
String line;
while((line=reader.readLine()) != null){
builder.append(line).append("\n");
}
System.out.println(builder.toString());
//关闭reader和socket
reader.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

先运行服务端,再运行客户端,会看到控制台输出预期中的信息:

自己用java实现飞鸽传书 1 - 实现socket通信的更多相关文章

  1. 自己用java实现飞鸽传书 2 - 实现文件传输

    第二步:实现文件传递. 上一步只是从服务端传递了一个字符串到客户端,这次需要对代码进行调整,实现从服务端获取文件,在客户端将文件存入目标地址. 调整后的代码: 服务端: import java.io. ...

  2. Java Socket:飞鸽传书的网络套接字

    在古代,由于通信不便利,一些聪明的人就利用鸽子会飞且飞得比较快.会辨认方向的优点,对其进行了驯化,用来进行消息的传递——也就是所谓的“飞鸽传书”.而在 Java 中,网络套接字(Socket)扮演了同 ...

  3. ubuntu下安装飞鸽传书

    1.从官网下载Linux版本飞鸽传书(http://www.ipmsg.org.cn/) 2.解压后执行 ./QIpmsg 若报错 libstdc++.so.6: version `CXXABI_AR ...

  4. [Android源码]Android源码之高仿飞鸽传书WIFI热点搜索与创建(一)

    (本文详情来源:android源码 http://www.eoeandroid.com/thread-296427-1-1.html   转载请注明出处!)  [Android源码分享]飞鸽传书的An ...

  5. 飞鸽传书linux进程退出不彻底

    问题描述: 飞鸽传书linux版本(QIpmsg)是有问题的. 在ubuntu14.04上运行的时候,没有任务栏图标,点击关闭也不能退出进程,端口仍然占用,无法再次运行. 这个问题截至1.2.1412 ...

  6. Mac 10.12安装飞鸽传书IPMessager

    说明:这个版本的飞鸽传书不能和Linux的互通,但是可以和Windows的互通,我猜测是协议问题:如果想要互通只能是Mac和Linux同时安装iptux. 下载: (链接: https://pan.b ...

  7. [经验] Java 服务端 和 C# 客户端 实现 Socket 通信

    由于项目需要, 我需要通过 Java 开发的服务端对 C# 作为脚本语言开发的 unity 项目实现控制 话不多说, 直接上代码 首先, 我们先来构建服务端的代码, 服务端我们使用 Java 语言 i ...

  8. Ubuntu+Mac使用飞鸽传书iptux进行互通

    iptux不能直接与Mac版的IPMessage进行文件传输,但是可以和Windows的IPMessage进行互通.如果要实现Ubuntu和Mac下互通,就必须编译同一套代码,因为使用C++写的,所以 ...

  9. Win8 使用经验之飞鸽传书

    参考资料: http://jingyan.baidu.com/article/c1a3101eb52cd8de656deba6.html Win8的UAC关闭不生效?彻底关闭Win8的UAC? 1. ...

随机推荐

  1. 《挑战程序设计竞赛》2.3 动态规划-优化递推 POJ1742 3046 3181

    POJ1742 http://poj.org/problem?id=1742 题意 有n种面额的硬币,面额个数分别为Ai.Ci,求最多能搭配出几种不超过m的金额? 思路 据说这是传说中的男人8题呢,对 ...

  2. 8.javascript获取表单中两个数字,并判断大小

    获取表单数据的方式: 1.表单注意些id 2.使用document.getElementById("num").value 获取值 3.一定要注意现在得到是string类型,可以用 ...

  3. Advanced Bash-Scripting Guide(学习笔记)

    http://www.tldp.org/LDP/abs/html/index.html       11.1. Loops tp://www.tldp.org/LDP/abs/html/loops1. ...

  4. <2014 05 21> 互联网时代的C语言——Go(2)

    **************************************************************************************************** ...

  5. Spring Data 开发环境搭建(二)

    首先咱们先创建一个maven工程 在pom.xml加入以下 依赖 <!--Mysql 驱动包--> <dependency> <groupId>mysql</ ...

  6. python学习笔记(二)— 数据类型

    一.变量.数据类型 1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...

  7. MySQL数据库(2)- 库的操作、表的操作、数据的操作、存储引擎的介绍

    一.库的操作 1.系统数据库 执行如下命令,查看系统数据库: mysql> show databases; 参数解释: information_schema: 虚拟库,不占用磁盘空间,存储的是数 ...

  8. Kotlin开发Android笔记

    外国人写的一个天气预报的例子,最后有源码下载地址,初学者可以研读一下 http://blog.csdn.net/true100/article/category/6257988 1:Kotlin介绍及 ...

  9. 按钮js跳转到非表单提交页

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. maven打包生成war