1. package 网络编程;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintStream;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;
  7.  
  8. public class TestServerSocket {
  9. public static void main(String[] args) throws IOException {
  10. ServerSocket server=new ServerSocket(9999);
  11. System.out.println("正在连接中……");
  12. Socket client=server.accept();
  13. PrintStream out=new PrintStream(client.getOutputStream());
  14. out.println("北京欢迎你。");
  15. out.close();
  16. client.close();
  17. server.close();
  18. }
  19. }

Server

  1. package 网络编程;
  2.  
  3. import java.io.IOException;
  4. import java.net.Socket;
  5. import java.net.UnknownHostException;
  6. import java.util.Scanner;
  7.  
  8. public class TestSocket {
  9. public static void main(String[] args) throws UnknownHostException, IOException {
  10. Socket client=new Socket("localhost",9999);
  11. Scanner scan=new Scanner(client.getInputStream());
  12. scan.useDelimiter("\n");
  13. if(scan.hasNext())
  14. System.out.println("响应数据:"+scan.next());
  15. scan.close();
  16. client.close();
  17. }
  18. }

Client


echo模型:

  1. package 网络编程;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintStream;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;
  7. import java.util.Scanner;
  8.  
  9. public class TestEchoServer {
  10. public static void main(String[] args) throws IOException {
  11. ServerSocket server = new ServerSocket(9999);
  12. Socket client = server.accept();
  13. Scanner scan = new Scanner(client.getInputStream());// 接收客户端输入
  14. PrintStream out = new PrintStream(client.getOutputStream());// 输出到客户端
  15. boolean flag = true;
  16. String tmp = "";
  17. while (flag) {
  18. if (scan.hasNext()) {
  19. tmp = scan.next().trim();
  20. if (tmp.equalsIgnoreCase("bye")) {
  21. out.println("再见!");
  22. flag = false;
  23. } else {
  24. out.println("Echo:" + tmp);
  25. }
  26. }
  27. }
  28. out.close();
  29. scan.close();
  30. client.close();
  31. server.close();
  32. }
  33. }

EchoServer

  1. package 网络编程;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintStream;
  5. import java.net.Socket;
  6. import java.net.UnknownHostException;
  7. import java.util.Scanner;
  8.  
  9. public class TestEchoClient {
  10. public static void main(String[] args) throws UnknownHostException, IOException {
  11. Socket client=new Socket("localhost",9999);
  12. Scanner scan=new Scanner(System.in);//键盘输入
  13. Scanner in=new Scanner(client.getInputStream());//服务端输入
  14. PrintStream out=new PrintStream(client.getOutputStream());//输出到服务端
  15. scan.useDelimiter("\n");
  16. // in.useDelimiter("\n");
  17. boolean flag=true;
  18. String msg="";
  19. while(flag){
  20. if(scan.hasNext()){//等待用户从键盘输入
  21. msg=scan.next().trim();
  22. out.println(msg);//信息转给服务端
  23. if(msg.equalsIgnoreCase("bye"))
  24. flag=false;
  25. else
  26. System.out.println(in.next());//打印服务端响应的信息
  27. }
  28. }
  29. out.close();
  30. in.close();
  31. scan.close();
  32. client.close();
  33. }
  34. }

EchoClient

  1. package 网络编程;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintStream;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;
  7. import java.util.Scanner;
  8.  
  9. class ClientThread implements Runnable {
  10. private Socket client;
  11.  
  12. public ClientThread(Socket client) {
  13. this.client = client;
  14. }
  15.  
  16. @Override
  17. public void run() {
  18. try {
  19. Scanner scan = new Scanner(client.getInputStream());// 接收客户端输入
  20. PrintStream out = new PrintStream(client.getOutputStream());// 输出到客户端
  21. boolean flag = true;
  22. String tmp = "";
  23. while (flag) {
  24. if (scan.hasNext()) {
  25. tmp = scan.next().trim();
  26. if (tmp.equalsIgnoreCase("bye")) {
  27. out.println("再见!");
  28. flag = false;
  29. } else {
  30. out.println("Echo:" + tmp);
  31. }
  32. }
  33. }
  34. out.close();
  35. scan.close();
  36. client.close();
  37. } catch (Exception e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. }
  42.  
  43. public class TestEchoServer {
  44. public static void main(String[] args) throws IOException {
  45. ServerSocket server = new ServerSocket(9999);
  46. boolean flag = true;
  47. while (flag) {
  48. Socket client = server.accept();//连接多个客户端
  49. new Thread(new ClientThread(client)).start();//每连接一个客户端启动一个线程
  50. }
  51. server.close();
  52. }
  53. }

EchoServer多线程

【java】网络socket编程简单示例的更多相关文章

  1. UDP协议网络Socket编程(java实现C/S通信案例)

    我的博客园:https://www.cnblogs.com/chenzhenhong/p/13825286.html 我的CSDN博客:https://blog.csdn.net/Charzous/a ...

  2. Java:基于TCP协议网络socket编程(实现C/S通信)

    目录 一.前言:TCP原理简介 二.Socket编程通信 三.TCP服务器端(具体代码) 四.TCP客户端(具体代码) 五.通信效果演示 六."创意"机器人:价值一个亿的AI核心代 ...

  3. java多线程实现TCP网络Socket编程(C/S通信)

    目录 开篇必知必会 一.多线程技术 二.实现多线程接收 1.单线程版本 2.多线程版本 三.多线程与进程的关系 四.客户端界面完整代码 五.多线程通信对比 最后 开篇必知必会 在前一篇<Java ...

  4. Java网络多线程编程:对象流错误导致Connection reset

    Java网络多线程编程--对象流错误导致Connection reset 在老韩的网络多线程编程实战项目中,发生了如下报错: 服务器端和客户端均发生了报错,在确定相应对象流代码完全没有问题之后,回归定 ...

  5. Linux网络编程简单示例

    linux 网络编程是通过socket(套接字)接口实现,Socket是一种文件描述符,socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭& ...

  6. Java 网络IO编程(BIO、NIO、AIO)

    本概念 BIO编程 传统的BIO编程 代码示例: public class Server { final static int PROT = 8765; public static void main ...

  7. 【转】java的socket编程

    转自:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台 ...

  8. (转)Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

    原文出自:http://blog.csdn.net/anxpp/article/details/51512200 1.BIO编程 1.1.传统的BIO编程 网络编程的基本模型是C/S模型,即两个进程间 ...

  9. Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

    本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...

随机推荐

  1. AI 新技术革命将如何重塑就业和全球化格局?深度解读 UN 报告(上篇)

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 张钦坤 腾讯研究院秘书长蔡雄山 腾讯研究院法律研究中心副主任祝林华 腾讯研究院法律研究中心助理研究员曹建峰 腾讯研究院法律研究中心高级研究员 ...

  2. JavaScript学习笔记(七)——函数的定义与调用

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  3. 对java泛型的理解

    正确的应用java泛型的特性可以更好的实现编程的开闭原则(对扩展开放,对修改关闭),这得益于java泛型提供的在程序运行时获取对象声明类型的特性. 静态语言的特性是在程序编译前进行声明,这样程序在编译 ...

  4. while循环小练习-猜答案

    条件 1.每个用户只能猜10次产品的价格2.每次猜玩价格,提示用户价格是多了还是少了或者对了3.如果用户才对则终止程序执行 break! i = 0 #设置一个次数变量 price = 38 #设置一 ...

  5. 九、Hadoop学习笔记————Hive简介

    G级别或者T级别都只能用hadoop

  6. c语言的枚举(遍历枚举)与数据类型总结

    一.枚举的概念 枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数.当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型. 比如,你可以用一个枚举类型的变量来表示季节, ...

  7. c语言的内存分析

    1. 进制 1. 什么是进制 ● 是一种计数的方式,数值的表示形式  汉字:十一   十进制:11  二进制:1011  八进制:13 ● 多种进制:十进制.二进制.八进制.十六进制.也就是说,同一个 ...

  8. C语言一些知识点总结

    一.关键字 1. 什么是关键字 1> 关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” 2> C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 auto doubl ...

  9. openstack高可用haproxy配置

    #openstack高可用haproxy配置openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #openstack高可 ...

  10. heartbeat+DRBD 高可用 双机热备

    heartbeat+DRBD 高可用 双机热备 原创博文http://www.cnblogs.com/elvi/p/7658109.html ## heartbeat+DRBD 高可用 双机热备 # ...