【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自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...
随机推荐
- select * from 的一些心得
如何简单运用好 select * from语句,在不同的函数下,有不同的先后顺序. 语法格式 (代表先后顺便) (2)select 字段名 查询什么东西 (1)from 表名,从哪个表查询 例如:查询 ...
- 电商SEO
大家都知道网站有SEO,电商也有SEO,今天陈晨就带大家来讲讲电商SEO的思路以及电商最重要的选品规划! 1. 选品是核心 2. 挖掘卖点是你走向成功必经之路 3. 产品定价策略---人群画像 4. ...
- Android Weekly Notes Issue #284
November 19th, 2017 Android Weekly Issue #284 本期内容丰富.有趣的有如何搭建真机测试平台,Proguard里面各类keep的区别,如何运行时获得泛型类型, ...
- python实现图片批量剪裁的程序
from PIL import Image import os fin = 'D:/test' fout = 'D:/test2' for file in os.listdir(fin): file_ ...
- [动态规划]P1004 方格取数
---恢复内容开始--- 题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 ...
- excel vlookup
今天在百度知道的时候,看到旁边有人问excel中条件查找vlookup的问题,有几位高手都知道使用vlookup作答,可惜都是没有经过测试,直接复制别人的答案,让所有的读者都无法实施,一头雾水.今天我 ...
- NSNotification
1.什么是NSNotification 每个运行中的application都有一个NSNotificationCenter的成员变量,它的功能就类似与公共栏,对象在这里注册关注每个确定Notifica ...
- centos 下安装pptp (vpn) 的方法
废话少说 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...
- 关于C++编译链接和模板函数
一,关于编译链接编译指的的把编译单元生成目标文件的过程链接是把目标文件链接到一起的过程编译单元:可以认为是一个.c或者.cpp文件.每个编译单元经过预处理会得到一个临时的编译单元.预处理会间接包含其他 ...
- 【机器学习】RNN学习
感谢中国人民大学的胡鹤老师,课程容量巨大,收获颇丰. 之前提到的CNN模型主要用到人类的视觉中枢,但其有一劣势,无论是人类的视觉神经还是听觉神经,所接受到的都是一个连续的序列,使用CNN相当于割裂了前 ...