socket的一些笔记

来源:互联网 发布:淘宝v6会员消费多少钱 编辑:程序博客网 时间:2024/06/05 07:12
服务端:
import java.io.IOException;
import java.net.ServerSocket;import java.net.Socket;public class Server {    public static void main(String[]args){        try {            //服务器实例化一个ServerSocket对象,并指定端口号为8888,表明通过8888端口进行通信            ServerSocket serverSocket = new ServerSocket(8888);            System.out.println("监听在端口号8888");            //调用accept()方法进行等待,直到有客户端连上服务器,连上服务端后,返回一个socket引用,这个socket会和客户端的socket进行通信            Socket socket = serverSocket.accept();            System.out.println("有连接过来" + socket);            socket.close();            serverSocket.close();        }catch (IOException e){            e.printStackTrace();        }    }}

客户端:

import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;public class Client {    public static void main(String[]args){        try{            /**客户端实例化一个Socket对象,指定服务器的地址(127.0.0.1)和端口号(8888),             * 如果能连接上服务端,就返回一个socket对象的引用,他能和服务端进行通信             * */            Socket socket = new Socket("127.0.0.1",8888);            System.out.println(socket);            socket.close();        }catch (UnknownHostException e){            e.printStackTrace();        }catch (IOException e){            e.printStackTrace();        }    }}

步骤:

服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信。
服务器调用 ServerSocket 类的 accept() 方法,该方法将一直等待,直到客户端连接到服务器上给定的端口。
服务器正在等待时,一个客户端实例化一个 Socket 对象,指定服务器名称和端口号来请求连接。
Socket 类的构造函数试图将客户端连接到指定的服务器和端口号。如果通信被建立,则在客户端创建一个 Socket 对象能够与服务器进行通信。
在服务器端,accept() 方法返回服务器上一个新的 socket 引用,该 socket 连接到客户端的 socket。
连接建立后,通过使用 I/O 流在进行通信,每一个socket都有一个输出流和一个输入流,客户端的输出流连接到服务器端的输入流,而客户端的输入流连接到服务器端的输出流。
TCP 是一个双向的通信协议,因此数据可以通过两个数据流在同一时间发送.以下是一些类提供的一套完整的有用的方法来实现 socket。

参考:

http://how2j.cn/k/socket/socket-socket/400.html?p=11687(代码实现)

http://www.runoob.com/java/java-networking.html(具体概念)

原创粉丝点击