看了这一篇文章,觉得写的还蛮详细的。在这里做个自己的总结和摘录。
http://blog.csdn.net/zzp_403184692/article/details/8065016
两类传输协议:
TCP:
可靠传输协议 socket<====>socket
UDP
不可靠传输协议 (数据报包含完整的地址信息,不一定能安全传输得到)
基于Socket的网络编程
1)创建socket
2)打开连接到socket的输入/输出流
3)按照一定的协议对socket进行读写操作
4)关闭socket
---------------------------------------------------------------------------------------------------------------------------------------
创建socket:
构造方法:
Socket(InetAddress address, int port); Socket(InetAddress address, int port, boolean stream); Socket(String host, int prot); Socket(String host, int prot, boolean stream); Socket(SocketImpl impl) Socket(String host, int port, InetAddress localAddr, int localPort) Socket(InetAddress address, int port, InetAddress localAddr, intlocalPort) ServerSocket(int port); ServerSocket(int port, int backlog); ServerSocket(int port, int backlog, InetAddress bindAddr)
Client:
package com.ehealth.net; import java.io.*; import java.net.Socket; public class client { public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1",4700); BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));//我们在键盘输入的东西,读取到内存 PrintWriter os=new PrintWriter(socket.getOutputStream());//从内存插入一个输出的管子 BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));//从内存插入一个输入的管子 String readLine; readLine=sin.readLine(); while(!readLine.equals("bye")){ os.println(readLine); os.flush(); System.out.println("Client:"+readLine); System.out.println("Server:"+is.readLine()); readLine=sin.readLine(); } os.close(); is.close(); socket.close(); } catch (IOException e) { System.out.println("Error"+e); } } }
Server:
package com.ehealth.net; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.*; public class Server { public static void main(String[] args) { ServerSocket server=null;//创建一个服务器的socket try { server=new ServerSocket(4700);//接受4700接口 } catch (IOException e) { e.printStackTrace(); } Socket socket=null;//socket插座 try { socket=server.accept();//插座插上 } catch (IOException e) { e.printStackTrace(); } String line; try { BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));//插入管子,读取 PrintWriter os=new PrintWriter(socket.getOutputStream());//插入管子,写入 BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));//插入管子 读取键盘输入信息 System.out.println("Client:"+is.readLine());//这里的is是用socket去get的,所以是先读取客户端的信息 line=sin.readLine();//这里的sin是通过获取键盘输入的 while(!line.equals("bye")){ os.println(line); os.flush(); System.out.println("server:"+line); System.out.println("Client:"+is.readLine()); line=sin.readLine(); } os.close(); is.close(); socket.close(); server.close(); } catch (IOException e) { System.out.println("Error:"+e); } } }
本文出自 “ehealth” 博客,谢绝转载!
原文:http://ehealth.blog.51cto.com/10942284/1721639