1.socket是网络编程,又称套接字编程.
2.socket使用TCP/UDP协议
3.TCP分为:应用层,会话层,表示层,传输层,网络层,数据链路层,物理层
UDP分为:网络层,网际层,应用层
4.服务器使用ServerSocket(port)
客户端使用Socket(ip,port)
5.在服务器和客户端之前传输使用IO通道,以队列的方式进行传送
6.步骤:
服务器,客户端:
1.创建ServerSocket(socket)对象,设置端口号
2.创建InputStream流对象
3.读取IO流
4.shutdown结束流
5.关闭流对象
服务器端代码
/** * * @author Administrator * 服务器端 */ public class serverSocket { public static void main(String[] args) { try { //1.创建socket服务器端对象 ServerSocket serverSocket = new ServerSocket(8080); //2.通过accept这个方法可以获得客户端是否连接成功了,如果链接成功返回一个对象 Socket scoket = serverSocket.accept(); InetAddress inetAddress = serverSocket.getInetAddress(); String hostAddress = inetAddress.getHostAddress(); System.out.println(hostAddress);//获取的是服务器本身的ip地址 System.out.println("获取服务器端ip地址"+inetAddress.toString()); if(scoket != null){ //连接成功 System.out.println("socket客户端连接成功"); //3.通过InputStream获取客户端传来的数据信息 //创建inputStream对象 InputStream in = scoket.getInputStream(); //定义一个字节数组 byte[] bt = new byte[1024]; //定义长度 int len; FileOutputStream out = new FileOutputStream("aa\cc.txt"); while((len = in.read(bt)) != -1){ System.out.println("服务器获取到的内容"+new String(bt,0,len)); out.write(bt, 0, len); } out.close(); in.close(); } //4.释放资源 serverSocket.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
客户端代码
/** * * @author Administrator *clientSocket客户端代码 */ public class ClientSocket { public static void main(String[] args) { try { //1.创建socket客户端 Socket socket = new Socket("127.0.0.1",8080); if(socket != null){ //连接成功 //2.向服务器端传输数据 //创建字节输出流OutputStream OutputStream outputStream = socket.getOutputStream(); //写入内容 outputStream.write("你好服务器端".getBytes()); //关闭输出流 outputStream.close(); } //3.关闭socket socket.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }