自己用java实现飞鸽传书 1 - 实现socket通信
第一步:
建立服务端客户端,实现端到端通信。因为要传递文件,信号量较大,故使用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通信的更多相关文章
- 自己用java实现飞鸽传书 2 - 实现文件传输
第二步:实现文件传递. 上一步只是从服务端传递了一个字符串到客户端,这次需要对代码进行调整,实现从服务端获取文件,在客户端将文件存入目标地址. 调整后的代码: 服务端: import java.io. ...
- Java Socket:飞鸽传书的网络套接字
在古代,由于通信不便利,一些聪明的人就利用鸽子会飞且飞得比较快.会辨认方向的优点,对其进行了驯化,用来进行消息的传递——也就是所谓的“飞鸽传书”.而在 Java 中,网络套接字(Socket)扮演了同 ...
- ubuntu下安装飞鸽传书
1.从官网下载Linux版本飞鸽传书(http://www.ipmsg.org.cn/) 2.解压后执行 ./QIpmsg 若报错 libstdc++.so.6: version `CXXABI_AR ...
- [Android源码]Android源码之高仿飞鸽传书WIFI热点搜索与创建(一)
(本文详情来源:android源码 http://www.eoeandroid.com/thread-296427-1-1.html 转载请注明出处!) [Android源码分享]飞鸽传书的An ...
- 飞鸽传书linux进程退出不彻底
问题描述: 飞鸽传书linux版本(QIpmsg)是有问题的. 在ubuntu14.04上运行的时候,没有任务栏图标,点击关闭也不能退出进程,端口仍然占用,无法再次运行. 这个问题截至1.2.1412 ...
- Mac 10.12安装飞鸽传书IPMessager
说明:这个版本的飞鸽传书不能和Linux的互通,但是可以和Windows的互通,我猜测是协议问题:如果想要互通只能是Mac和Linux同时安装iptux. 下载: (链接: https://pan.b ...
- [经验] Java 服务端 和 C# 客户端 实现 Socket 通信
由于项目需要, 我需要通过 Java 开发的服务端对 C# 作为脚本语言开发的 unity 项目实现控制 话不多说, 直接上代码 首先, 我们先来构建服务端的代码, 服务端我们使用 Java 语言 i ...
- Ubuntu+Mac使用飞鸽传书iptux进行互通
iptux不能直接与Mac版的IPMessage进行文件传输,但是可以和Windows的IPMessage进行互通.如果要实现Ubuntu和Mac下互通,就必须编译同一套代码,因为使用C++写的,所以 ...
- Win8 使用经验之飞鸽传书
参考资料: http://jingyan.baidu.com/article/c1a3101eb52cd8de656deba6.html Win8的UAC关闭不生效?彻底关闭Win8的UAC? 1. ...
随机推荐
- Python IDLE或shell中切换路径
在Python自带的编辑器IDLE中或者python shell中不能使用cd命令,那么跳到目标路径呢.方法是使用os包下的相关函数实现路径切换功能. import os os.getcwd() # ...
- CentOS安装Apache-2.4.25+安全配置
注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Nginx之前,请确保已经使用yum安装了各基础组件,并且配置了www用户和用户组,具体见<CentOS ...
- Java Concurrency In Practice
线程安全 定义 A class is thread-safe if it behaves correctly when accessed from multiple threads, regardle ...
- Python glob使用
http://www.cnblogs.com/lovemo1314/archive/2011/04/26/2029556.html 说明: glob是python自己带的一个文件操作相关模块,用它可以 ...
- java获取当前路径&读取当前目录下文件
项目目录如下: test1.class中读取test.txt import java.io.*; import java.util.Scanner; public class Test1 { publ ...
- pycharm调试
pycharm调试 flask app调试: 1.打开edit configurations面板 run===>edit configurations(图一或图二处都可以) 2.配置项目信息 点 ...
- Vue(6)- Vue-router进阶、单页面应用(SPA)带来的问题
一.Vue-router进阶 回顾学过的vue-router,并参考官方文档学习嵌套路由等路由相关知识. 二.单页面应用(SPA)带来的问题 1.虽然单页面应用有优点,但是,如果后端不做服务器渲染(h ...
- Python基础教程-Dict和Set
Python的dict Python内置了字典:dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 比如,要根据同学的名字查找对应的 ...
- SVN入门-2分钟教你入门
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010540106/article/details/37317201 学习SVN首先我们应该知道 ...
- Bootstrap实现的页面
实现的效果如图,使用bootstrap需要至少三个文件 去bootstrap网上下载,然后使用这三个文件可以了 使用方式,通过标签,class命名来引用已经定制好的html样式 <!DOCTYP ...