前言:以前就学习过关于Socket编程的知识,那时候觉得还挺容易,能够实现服务器和客户端的聊天。后来,渐渐的就忘记了。由于现在在一家金融公司,公司项目必须使用到Socket,而我对Socket已模糊不清了,今天可以说是温故而知新吧。
Socket ----套接字
是网络应用程序编程的接口和一种机制
用套接字中的相关函数来建立链接和完成通信
Socket可以看成在两个程序进行通讯连接中的一个端点
通过IP地址可以唯一标识网络中的主机。而协议和端口号,可以唯一标识主机中的应用程序(进程)。
开始上代码来看看Socket如何使用,首先服务端:
package com.demi.rx;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Created by demi on 16/10/12.
*/
public class Server {
public static void main(String args[]){
ServerSocket ss = null;
Socket s= null;
DataInputStream dis =null;
DataOutputStream dos =null;
try {
ss =new ServerSocket(3320);
while(true){
s = ss.accept();
dis =new DataInputStream(s.getInputStream());
System.out.println(dis.readUTF()); //打印来自客户端的数据
dos =new DataOutputStream(s.getOutputStream());
dos.writeUTF("hello Client :" +s.getInetAddress()+" :" +s.getPort());//写入数据到客户端
}
} catch (IOException e) {
e.printStackTrace();
try {
dis.close();
dos.close();
s.close();
ss.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
然后客户端 Client.java:
<pre name="code" class="java">package com.demi.rx;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
/**
* Created by demi on 16/10/12.
*/
public class Client extends Socket{
public static void main(String args[]){
DataInputStream dis =null;
DataOutputStream dos =null;
try {
Socket socket =new Socket("127.0.0.1",3320);
dos =new DataOutputStream(socket.getOutputStream());
dos.writeUTF("hello Server"); //写入数据到服务器。
dos.flush();
dis =new DataInputStream(socket.getInputStream());
System.out.println(dis.readUTF());//打印输出来自服务器的数据。
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}