Java编程中,要想要使用网络通信,就离不开Socket编程,在此对socket进行简单的介绍。首先声明,这是一个入门级的介绍,仅仅简单的实现了客户端向服务端发送数据,服务端正常的接收数据,当接收到特定的数据时,服务端和客户端都关闭,一个服务端对应一个客户端,不涉及多线程等内容,一切都是最简单最基础的知识点。

下面给出的代码,可以直接拷贝到eclipse中运行, 无需任何更改。

关于socket和seversocket的原理以及构造函数等一些简单的介绍,可以查看其他的一些博客,期中写的比较清晰,我给大家推荐一个[Java]Socket和ServerSocket学习笔记 。期中关于socket的通信原理和需要基本了解的一些构造函数,常用函数等,都进行了简单的介绍。

开发环境为eclipse,新建两个普通的Java工程,一个命名为server_1,作为服务端,另一个命名为client_1,作为客户端,完成的功能就是在客户端的控制台输入内容后,客户端将内容发送至服务端,在服务端的控制台可以看到输入的内容,当输入的内容为shutdown时,服务端和客户端都关闭通信,通信结束。

服务端代码:

package server_1;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class server_1 {  public static void main(String[] args) throws IOException { //将异常全部抛出 ServerSocket server = new ServerSocket(10000);    //用serversocket来启动服务器,并指定端口号System.out.println("服务器启动。。。");Socket socket = server.accept();  //获取客户端的socket信息BufferedReader in = null;  in = new BufferedReader(new InputStreamReader(socket.getInputStream())); //启动缓冲区 while (true) {  String msg = in.readLine(); // 将客户端发送来的信息存储在msg中 System.out.println(msg);   if (msg.equals("shutdown")) {  //客户端如果发送的是shutdown,就关闭客户端break;  }  }in.close(); //执行相应的关闭操作                 }
}

考虑这是一个入门级的程序,所以暂时不考虑各种异常情况,咋mian函数的后面就讲各种异常抛出。

建立seversocket,并且指定服务器的端口号为10000,此时服务器端开始运行。(端口号尽量取大于1024的数字,小于1024的一般都是系统程序占用)

然后利用socket实现和客户端的连接。

in是一个输入缓冲区,客户端发送来的信息就暂时存储在这个缓冲区中。

然后用while语句,循环的监听客户端发送过来的数据,当是一般信息时,就讲客户端发来的内同打印到控制台,如果是“shutdown”,则关闭服务器端,此次通信终止。

客户端程序:

package client_1;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class client_1 {  public static void main(String[] args) throws Exception {  System.out.println("客户端启动");Socket socket = new Socket("localhost", 10000);  //启动socket,并连接本地主机的相应端口号PrintWriter out = new PrintWriter(socket.getOutputStream());  BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));//从控制台获取输入的内容  //不断的获取输入的内容,并不断的发送给服务器,当输入shutdown时,跳出循环,停止运行while (true) {  String msg = reader.readLine();  out.println(msg);  out.flush();  if (msg.equals("shutdown")) {  break;  }  }  //执行相应的关闭操作socket.close();out.close();reader.close();}
}

同样也是在main函数后就抛出所有的异常,不考虑一些比较复杂的异常情况。

建立socket来准备进行通信,指定服务端的位置为“localhost”(也就是本机,也可以使用IP:127.0.0.1),端口号要和服务器端的端口号对应,为10000。
建立reader为缓冲区,将控制台输入的内容先存储到缓冲区中。

建立out用来发送数据。

通过while循环监听控制台,通过socket将缓冲区的内容发送到服务端,如果输入的是一般结果,则将内容发送给服务端,如果输入的时“shutdown”,则将内容发送后跳出循环, 此次通信结束。

以上就是关于socket通信的一个非常简答的例子。

2015年11月19日   西安交通大学

Java中利用socket实现简单的服务端与客户端的通信(入门级)相关推荐

  1. Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信

    本文计划采用socket实现客户端和服务端的任意双向通信,即客户端可以随时给服务端发消息,服务端也可以随时给客户端发消息,最终结果就是一个类似与QQ的聊天软件的功能. 以下代码可以直接拷贝到Eclip ...

  2. Java中利用socket实现简单的服务端与客户端的通信(基础级)

    在上一篇文章中,简单的介绍了java中入门级的socket编程,简单的实现了客户端像服务器端发送数据,服务器端将数据接收并显示在控制台,没有涉及多线程.上一篇文章的链接:Java中利用socket实现 ...

  3. SpringBoot(23) 集成socket.io服务端和客户端实现通信

    一.前言 websocket和socket.io区别? websocket 一种让客户端和服务器之间能进行双向实时通信的技术 使用时,虽然主流浏览器都已经支持,但仍然可能有不兼容的情况 适合用于cli ...

  4. socket.io服务端是java_SpringBoot(23) 集成socket.io服务端和客户端实现通信

    @Slf4j @Service(value = "socketIOService") public class SocketIOServiceImpl implements ISo ...

  5. axis idea 设置apache_利用IDEA创建Web Service服务端和客户端的详细过程

    创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 WebServ ...

  6. Java实现服务端和客户端的通信(文件下载)

    网络编程 网络通信的介绍 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据 两台电脑连在一起就组成了一个计算机网络.我们通过光纤连接到电信的网关,中国电信通过海底光缆和美国电信网关连接,你 ...

  7. windows Socket编程之TCP服务端与客户端

    在前面的文章中有一篇讲到了命名管道通信,它是创建一根管道来进行进程之间或网络之间通信的.但是它有些缺陷,比如说效率较低等.而从这篇文章开始将介绍socket编程.socket是通过TCP,UDP,IP ...

  8. Winform中使用MQTTnet实现MQTT的服务端和客户端之间的通信以及将订阅的消息保存到文件

    场景 MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻 ...

  9. 简单的c++服务端与客户端的通信

    本篇博客是本人没有深入学习网络通信,对其浅浅的了解了一下,只知道怎么连接以及发送内容,若内容有什么错误的地方还麻烦各位大佬可以指出来大家一起讨论一下.   服务端代码如下: #include < ...

最新文章

  1. elasticsearch的备份和恢复(转)
  2. ubuntu下面搭建SolrCloud集群
  3. css实现图片虚化_CSS中实现图片自适应的方法
  4. Android 使用图片铺满某个区域
  5. 第四冠!腾讯AI「绝艺」斩获世界智能围棋公开赛冠军
  6. php的foreach
  7. Flutter进阶—实现动画效果(七)
  8. 线上 ELK 集群健康值 red 状态问题排查与解决
  9. 进阶01Object类
  10. fh 幅频特性曲线怎么画fl_北京消防,关于消防图,你怎么看?
  11. web前端课程课件汇总
  12. 老师计算机组合照说说,关于老师的空间说说23句
  13. 深度学习在羚珑中的探索 -- 模板风格分类识别
  14. Qt读取Json文件数据
  15. 南桥芯片和北桥芯片都有什么作用
  16. 二、操作系统基本原理
  17. Unity Shader - BRP - Soft Particle - 软粒子
  18. 渡者 逆向通关分析报告【配置文件】
  19. 曾经占据90%市场份额的家校互动平台,为何被小天才打败?
  20. 为什么评论会被折叠?

热门文章

  1. 【git学习三】git基础之git管理远程仓库
  2. 消费金融首推即时沟通工具“马上”探索科技金融发展新方向
  3. LESSON 9.5 随机森林在巨量数据上的增量学习
  4. 有的人在25岁时就死了,但在75岁时才被埋葬:周鸿祎
  5. 基于 Ubuntu 搭建微信小程序服务
  6. ElasticSearch学习总结(三):查询总结
  7. 京东DNN Lab首席科学家:用深度学习搞定80%的客服工作
  8. 年终盘点:2015年人工智能的五大关键词
  9. 微型计算机接口位于什么之间,io接口位于什么和什么之间
  10. Spring MVC-05循序渐进之数据绑定和form标签库(下) 实战从0到1