java socket通讯(一) 入门示例

一、入门

       要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别

二、示例

       首先新建了一个java工程,包括两个部分,客户端SocketClient类和服务器端SocketServer类,服务器端SocketServer监听3756端口,客户端SocketClient往服务器端的3756端口发送一些文本信息,服务器端SocketServer接受完客户端的信息后,将客户端的信息打印出来。

服务器端SocketServer:

package GPS;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.io.BufferedWriter;

import java.io.OutputStreamWriter;



import java.net.ServerSocket;

import java.net.Socket;





public class SocketServer {

    public static void main(String [] args){

        ServerSocket ss = null;

        BufferedReader br = null;

        Socket sk = null;

        try{

            System.out.println("create server socket....");

            ss = new ServerSocket(3756);

            System.out.println("wait for a connection....");

            while(true)     //服务器端一直监听这个端口,等待客户端的连接

            {

              sk = ss.accept();                 

              System.out.println("get a socket object...");

              br = new BufferedReader(new InputStreamReader(sk.getInputStream()));

              String line = null;

              while((line = br.readLine()) != null){

                  System.out.println(line);     //服务器端打印客户端发送的信息数据

              }

          }

        }

        catch(Exception ex){

            System.out.println(ex.getMessage());

        }

        finally{

          try{

              if(br != null){

                  br.close();

              }

              if(ss != null){

                  ss.close();

              }

              if(sk != null){

                  sk.close();

              }

          }

          catch(Exception ex){

              System.out.println(ex.getMessage());

          }

        }

      }



}

 

客户端SocketClient:

package GPS;

import java.io.BufferedInputStream;

import java.io.BufferedWriter;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.text.SimpleDateFormat;

import java.util.Date;



public class SocketClient {

    public static void main(String [] args){

          Socket sk = null;

          PrintWriter pw = null;

          try{

              sk = new Socket("localhost",3756);

              pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())));

              while(true)

              {

                 Thread.sleep(3000);

                 pw.println("I come from client");    //客户端往服务器端发送数据

                 pw.flush();

              }

          }

          catch(Exception ex){

              System.out.println(ex.getMessage());

          }

          finally{

            try{

              if(sk != null){

                  sk.close();

              }

              if(pw != null){

                  pw.close();

              }

            }

            catch(Exception ex){

                System.out.println(ex.getMessage());

            }

          }

      }



}

 三、运行

首先启动服务器端SocketServer,然后运行客户端类SocketClient,服务端每隔3秒就会收到客户端发送来的信息:I come from client

create server socket....

wait for a connection....

get a socket object...

I come from client

 

    这样就完成了一次socket连接请求,原理很简单,服务器端监听某一个端口,客户端向服务器端的指定端口请求连接,连接成功后,发送socket数据,服务器端接收并打印输出

你可能感兴趣的:(java socket)