[java] java socket 通信基础

 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。

       对于Socket之间的通信其实很简单,服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:

1.服务端代码:

package com.xwolf.netty.nio;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by Administrator on 2015/9/3.
 */
public class ServerSocketIO {
    private static  final int PORT=9898;
    public static void main(String[] args)throws  Exception{

        ServerSocket serverSocket = new ServerSocket(PORT);
       Socket socket= serverSocket.accept();
        InputStream ins =  socket.getInputStream();
        byte[] bytes=new byte[1024];
        StringBuffer buffer = new StringBuffer();
        int len=0;
        while((len=ins.read(bytes))!=-1){
            buffer.append(new String(bytes),0,len);
        }
        System.out.println("客户端内容:"+ buffer.toString());
        ins.close();
    }
}

2.客户端代码:

package com.xwolf.netty.nio;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/**
 * Created by Administrator on 2015/9/3.
 */
public class ClientSocketIO {

    public static  void main(String[] args)throws  Exception{
        Socket socket = new Socket("localhost",9898);

        OutputStream ous = socket.getOutputStream();

        String text ="Hello Standard IO Socket";
        ous.write(text.getBytes());
        ous.flush();
        ous.close();

    }
}

先启动服务端,再启动客户端。此处可以设置为从控制台输入。

posted @ 2015-09-03 23:11  snow__wolf  阅读(185)  评论(0)    收藏  举报