1.tcp协议的编程
* 1:客户端。步骤
* 1:创建Socket对象,构造方法里需要指定服务端的ip地址和端口.
* Socket socket = new Socket(服务端的ip地址或者InetAddress对象,服务端的端口);
* 2:如果想要从服务端读取数据,那么就需要获得输入管道:InputStream
* 如果想将数据写到服务端,则需要获得输出管道:OutputStream
* 读取数据: InputStream is = socket.getInputStream();
* 发送数据: OutputStream os = socket.getOutputStream();
* 3:准备数据,用InputStream来读取数据,或者用OutputStream来向服务端写入数据,
* 读数据 : is.read(数据)
* 写数据:os.write(数据)
* 4:关闭流,关闭Socket。
* is.close();
* os.close();
* socket.close();
* 2:服务端:步骤
* 1;创建ServerSocket对象,并且指定监听的端口。
* ServerSocket ss = new ServerSocket(9999);
* 2:调用accept方法,监听是否有客户端连接。如果连接上则分配一个Socket.
* 3:获得Socket的读取管道和输出管道。再进行读取和写入数据。
* 4:将Socket关闭。
* 5:将ServerSocket关闭。
2.TCP的发送和接收
* 发送
// 创建套接字。它会自动到指定ip地址的指定端口。 Socket socket = new Socket("127.0.0.1", 9999); // 发送数据。 String str = "tcp,我来了"; // 得到输出管道。 OutputStream os = socket.getOutputStream(); os.write(str.getBytes()); os.close(); socket.close();
* 接收
ServerSocket ss = new ServerSocket(9999); //监听是否有客户端连接到本服务器端。如果有连接,则分配一个Socket。 Socket socket = ss.accept();//阻塞式的方法。 //获得输入管道。 InputStream is = socket.getInputStream(); byte[] b =new byte[1024]; //返回本次读取的字节数量。 int length = is.read(b); System.out.println(new String(b,0,length)); ss.close();
3.UDP发送和接收
* 发送
InetAddress ia = InetAddress.getLocalHost();//本机地址 Scanner scanner = new Scanner(System.in); String sendIn = scanner.nextLine(); DatagramSocket socket = new DatagramSocket(); byte[] b = sendIn.getBytes(); DatagramPacket p = new DatagramPacket(b, b.length, ia, 9900); socket.send(p); socket.close();
* 接收
DatagramSocket socket = new DatagramSocket(9900); byte[] b = new byte[1024]; DatagramPacket p = new DatagramPacket(b, b.length); socket.receive(p); System.out.println(p.getAddress().getHostAddress()+p.getPort()+(new String(b,0,b.length)));
原文:http://www.cnblogs.com/anni-qianqian/p/5236656.html