Skip to content

sereinli/Socket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Socket

Android Socket 进程间通信 通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。 每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。 Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。

在java中,Socket和ServerSocket类库位于java .net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。 在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。

服务端的代码,在服务端特定的端口9999监听客户端请求,一旦有请求,便会执行,而后继续监听。 使用accept()这个阻塞函数,就是该方法被调用后一直等待客户端的请求,直到有请求且连接到同一个端口,accept()返回一个对应于客户端的Socket。

#客户端发送数据主要代码:

    private void connectServer() {
        new Thread() {
            @Override
            public void run() {
                try {
                    mSocket = new Socket("10.19.83.64", 9999);  //服务端所运行的设备的IP
                    Log.d("rain", "mSocket:"+mSocket);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

    private void sendMessage() {
        new Thread() {
            @Override
            public void run() {
                if(mSocket != null) {
                    try {
                        DataOutputStream writer = new DataOutputStream(mSocket.getOutputStream());
                        writer.writeUTF("Hello, my id is 007!");
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }

#服务器端接收数据主要代码:

    private void startServer() {
        try {
            ServerSocket serverSocket = new ServerSocket(9999);
            while (mLoop) {
                reader(serverSocket.accept());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void reader(final Socket socket) {
        new Thread() {
            @Override
            public void run() {
                try {
                    DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
                    String messageFromClient = dataInputStream.readUTF();

                    Log.d("rain", "server received message from client:"+messageFromClient);
                    Message message = new Message();
                    message.what = UPDATE_MESSAGE_FROM_CLIENT;
                    message.obj = messageFromClient;
                    mHandler.sendMessage(message);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

About

Android Socket 进程间通信

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages