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

原创 2015年11月19日 18:15:39

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 客户端与服务器端的简单交互

一直想了解客户端与服务器之间的底层的一些交互 我刚开始看到关于解析header的一些例子,但是不清楚是客户端呢还是服务器端 后来,我发现,我的想法是有问题的,解析header只是例子的一个体现方式。 ...
  • u010045971
  • u010045971
  • 2015年11月05日 10:02
  • 1794

Java Socket实现多个客户端连接同一个服务端

使用Socket实现多个客户端和同一客户端通讯;首先客户端连接服务端发送一条消息,服务端接收到消息后进行处理,完成后再回复客户端一条消息。本人通过自己的思维编写了一份服务端和客户端实现的代码,望能与大...
  • huang930528
  • huang930528
  • 2016年08月30日 18:16
  • 10355

Java Socket 简单的Client/Server程序

一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地...
  • cynhafa
  • cynhafa
  • 2011年10月14日 14:53
  • 39147

Java通信之客户端的创建以及客户端和服务器的简单交互

Java通信之客户端的创建以及客户端和服务器的简单交互 一、客户端的创建 现在所使用的是windows自带telnet客户端,并且只能发送英文,今天我们将自己创建客户端,并让客户端和服务器进行简答...
  • BlueSky_USC
  • BlueSky_USC
  • 2017年01月14日 01:27
  • 3628

一个 Java 的 Socket 服务器和客户端通信的例子

一个 HelloWord 级别的 Java Socket 通信的例子。通讯过程:         先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求。然后运行 Client 端...
  • defonds
  • defonds
  • 2012年09月12日 15:21
  • 138524

Java简单的客户端与服务器的建立与通信

简述: 建立简单的server与client,在利用socket上通信 知识点: 1. java socket 通信 2. java GUI的几个控件 3. 多线程并发 ...
  • anialy
  • anialy
  • 2012年08月26日 00:04
  • 19161

Java中使用socket实现客户端与服务端交互

Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取...
  • min996358312
  • min996358312
  • 2017年03月15日 17:10
  • 1450

基于java socket的简单FTP功能实现

  • 2010年01月01日 17:17
  • 13KB
  • 下载

Java实现服务器和客户端简单通信

Java中网络编程这一块有封装的类库,使用简单,了解原理可以教容易实现服务器和客户端的简单通信。在编程之前,首先要需要对TCP/IP协议有一定的了解,需要知道Socket套接字的作用以及用法,这个可以...
  • superxiaolong123
  • superxiaolong123
  • 2017年04月13日 21:40
  • 1374

客户端与服务端Socket通信原理详解

对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将...
  • JiShuiSanQianLi
  • JiShuiSanQianLi
  • 2016年11月18日 06:44
  • 6838
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中利用socket实现简单的服务端与客户端的通信(入门级)
举报原因:
原因补充:

(最多只允许输入30个字)