【java】网络socket编程简单示例
package 网络编程; import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket; public class TestServerSocket {
public static void main(String[] args) throws IOException {
ServerSocket server=new ServerSocket(9999);
System.out.println("正在连接中……");
Socket client=server.accept();
PrintStream out=new PrintStream(client.getOutputStream());
out.println("北京欢迎你。");
out.close();
client.close();
server.close();
}
}
Server
package 网络编程; import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner; public class TestSocket {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client=new Socket("localhost",9999);
Scanner scan=new Scanner(client.getInputStream());
scan.useDelimiter("\n");
if(scan.hasNext())
System.out.println("响应数据:"+scan.next());
scan.close();
client.close();
}
}
Client
echo模型:
package 网络编程; import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class TestEchoServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(9999);
Socket client = server.accept();
Scanner scan = new Scanner(client.getInputStream());// 接收客户端输入
PrintStream out = new PrintStream(client.getOutputStream());// 输出到客户端
boolean flag = true;
String tmp = "";
while (flag) {
if (scan.hasNext()) {
tmp = scan.next().trim();
if (tmp.equalsIgnoreCase("bye")) {
out.println("再见!");
flag = false;
} else {
out.println("Echo:" + tmp);
}
}
}
out.close();
scan.close();
client.close();
server.close();
}
}
EchoServer
package 网络编程; import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner; public class TestEchoClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client=new Socket("localhost",9999);
Scanner scan=new Scanner(System.in);//键盘输入
Scanner in=new Scanner(client.getInputStream());//服务端输入
PrintStream out=new PrintStream(client.getOutputStream());//输出到服务端
scan.useDelimiter("\n");
// in.useDelimiter("\n");
boolean flag=true;
String msg="";
while(flag){
if(scan.hasNext()){//等待用户从键盘输入
msg=scan.next().trim();
out.println(msg);//信息转给服务端
if(msg.equalsIgnoreCase("bye"))
flag=false;
else
System.out.println(in.next());//打印服务端响应的信息
}
}
out.close();
in.close();
scan.close();
client.close();
}
}
EchoClient
package 网络编程; import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; class ClientThread implements Runnable {
private Socket client; public ClientThread(Socket client) {
this.client = client;
} @Override
public void run() {
try {
Scanner scan = new Scanner(client.getInputStream());// 接收客户端输入
PrintStream out = new PrintStream(client.getOutputStream());// 输出到客户端
boolean flag = true;
String tmp = "";
while (flag) {
if (scan.hasNext()) {
tmp = scan.next().trim();
if (tmp.equalsIgnoreCase("bye")) {
out.println("再见!");
flag = false;
} else {
out.println("Echo:" + tmp);
}
}
}
out.close();
scan.close();
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} public class TestEchoServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(9999);
boolean flag = true;
while (flag) {
Socket client = server.accept();//连接多个客户端
new Thread(new ClientThread(client)).start();//每连接一个客户端启动一个线程
}
server.close();
}
}
EchoServer多线程
【java】网络socket编程简单示例的更多相关文章
- UDP协议网络Socket编程(java实现C/S通信案例)
我的博客园:https://www.cnblogs.com/chenzhenhong/p/13825286.html 我的CSDN博客:https://blog.csdn.net/Charzous/a ...
- Java:基于TCP协议网络socket编程(实现C/S通信)
目录 一.前言:TCP原理简介 二.Socket编程通信 三.TCP服务器端(具体代码) 四.TCP客户端(具体代码) 五.通信效果演示 六."创意"机器人:价值一个亿的AI核心代 ...
- java多线程实现TCP网络Socket编程(C/S通信)
目录 开篇必知必会 一.多线程技术 二.实现多线程接收 1.单线程版本 2.多线程版本 三.多线程与进程的关系 四.客户端界面完整代码 五.多线程通信对比 最后 开篇必知必会 在前一篇<Java ...
- Java网络多线程编程:对象流错误导致Connection reset
Java网络多线程编程--对象流错误导致Connection reset 在老韩的网络多线程编程实战项目中,发生了如下报错: 服务器端和客户端均发生了报错,在确定相应对象流代码完全没有问题之后,回归定 ...
- Linux网络编程简单示例
linux 网络编程是通过socket(套接字)接口实现,Socket是一种文件描述符,socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭& ...
- Java 网络IO编程(BIO、NIO、AIO)
本概念 BIO编程 传统的BIO编程 代码示例: public class Server { final static int PROT = 8765; public static void main ...
- 【转】java的socket编程
转自:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台 ...
- (转)Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
原文出自:http://blog.csdn.net/anxpp/article/details/51512200 1.BIO编程 1.1.传统的BIO编程 网络编程的基本模型是C/S模型,即两个进程间 ...
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...
随机推荐
- 1.Servlet介绍 和 HTTP协议简述
1. Servlet是什么? sun公司制订的一种用来扩展web服务器功能的组件规范. (1)扩展web服务器功能 注: 早期的web服务器只能处理静态资源的请求,即需要事先将 html文件准备好,并 ...
- (转载) Java子类与父类之间的对象转换
在使用Java的多态机制时,常常使用的一个特性便是子类和父类之间的对象转换.从子类向父类的转换称为向上转换(upcasting),通过向上转换,我们能够在编写程序时采用通用程序设计的思想,在需要使用子 ...
- Codeforces543BDestory Roads心得
题目描述: In some country there are exactly n cities and m bidirectional roads connecting the cities. Ci ...
- 玩转html
简介 CSS 是什么? CSS是Cascading Style Sheets的简称,中文称为层叠样式表. 作用 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象 ...
- 如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)
在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本. 滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务.同时,在更新的过程中,总是 ...
- php命令执行脚本
php -f jiaoben.php & 读入并解释指明的文件.
- JS 判断某个字符串是否存在与数组中
<script> function in_array(stringToSearch, arrayToSearch) { for (s = 0; s < arrayToSearch.l ...
- [PHP基础]有关isset empty 函数的面试题
用isset()和empty()判断下面的变量. $str = ''; $int = 0 ; $arr = array(); isset($str) 返回的是 true 还是 false empty( ...
- 智能合约语言Solidity教程系列2 - 地址类型介绍
智能合约语言Solidity教程系列第二篇 - Solidity地址类型介绍. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你 ...
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...