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 服务器和客户端通信的例子

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

基于tcp协议的socket客户端与服务端的通信-java

描述:基于tcp的Socket与ServerSocket的通信,客户端和服务端的聊天 实现语言:java 一:服务端的代码 1:服务端的键盘录入代码package chat;import...

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

一个 HelloWord 级别的 Java Socket 通信的例子。通讯过程:         先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求。然后运行 Client 端...
  • fjseryi
  • fjseryi
  • 2013年10月13日 14:04
  • 20118

java-基本的Socket编程-实现服务器端和客户端通信

基本的Socket编程: 本实例介绍Socket编程的基本步骤。启动Socket服务后,再打开Socket刻画段,在输入框中输入消息,然后发送给服务器端,服务器端将收到的消息返回到客户端。关键技术:...

Java Socket 简单的Client/Server程序

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

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

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

Java review--NIO实例:实现服务端和客户端的简单通信

package nio; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerS...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

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

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

Java 利用套接字Socket实现简单的服务器与客户端通信

我们要实现的具体功能是:利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。客户端向服务器端发送Time命令,服务器端接受到该字符串后将服务器端当前时间返回给客户端;客户...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中利用socket实现简单的服务端与客户端的通信(入门级)
举报原因:
原因补充:

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