【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自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...
随机推荐
- AI 新技术革命将如何重塑就业和全球化格局?深度解读 UN 报告(上篇)
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 张钦坤 腾讯研究院秘书长蔡雄山 腾讯研究院法律研究中心副主任祝林华 腾讯研究院法律研究中心助理研究员曹建峰 腾讯研究院法律研究中心高级研究员 ...
- JavaScript学习笔记(七)——函数的定义与调用
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- 对java泛型的理解
正确的应用java泛型的特性可以更好的实现编程的开闭原则(对扩展开放,对修改关闭),这得益于java泛型提供的在程序运行时获取对象声明类型的特性. 静态语言的特性是在程序编译前进行声明,这样程序在编译 ...
- while循环小练习-猜答案
条件 1.每个用户只能猜10次产品的价格2.每次猜玩价格,提示用户价格是多了还是少了或者对了3.如果用户才对则终止程序执行 break! i = 0 #设置一个次数变量 price = 38 #设置一 ...
- 九、Hadoop学习笔记————Hive简介
G级别或者T级别都只能用hadoop
- c语言的枚举(遍历枚举)与数据类型总结
一.枚举的概念 枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数.当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型. 比如,你可以用一个枚举类型的变量来表示季节, ...
- c语言的内存分析
1. 进制 1. 什么是进制 ● 是一种计数的方式,数值的表示形式 汉字:十一 十进制:11 二进制:1011 八进制:13 ● 多种进制:十进制.二进制.八进制.十六进制.也就是说,同一个 ...
- C语言一些知识点总结
一.关键字 1. 什么是关键字 1> 关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” 2> C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 auto doubl ...
- openstack高可用haproxy配置
#openstack高可用haproxy配置openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #openstack高可 ...
- heartbeat+DRBD 高可用 双机热备
heartbeat+DRBD 高可用 双机热备 原创博文http://www.cnblogs.com/elvi/p/7658109.html ## heartbeat+DRBD 高可用 双机热备 # ...