1.什么叫网络编程
通过套接字来进行网络传输数据,也是用字节输入输出流来读取和发送数据
2.C/S模式:
C:customer客户端:发送链接请求
S:server:服务端,监听客户端的请求
会话:一次通讯可以多次交换数据
3.网络传输协议
TCP/IP:建立直接管道,传输数据稳定,按顺序接收
UDP:不过传输过程,只关注发送和接收的结果,不一定按顺序接收数据
HTTP:网页传输
4.实现步骤:见案例
a.写服务端,建立监听
b.写客户端,发送链接请求
c.建立链接后用字节流完成数据交互
5.例子
客户端:
1 package com.demo1123; 2 3 import java.io.IOException; 4 import java.io.OutputStream; 5 import java.io.PrintWriter; 6 import java.net.Socket; 7 import java.net.UnknownHostException; 8 import java.util.Scanner; 9 10 public class Client { 11 public static void main(String[] args) throws Exception, IOException { 12 //客户端发送请求去链接服务端 13 Socket socket = new Socket("192.168.5.145", 9999); 14 System.out.println("链接服务端成功!!!"); 15 16 Scanner sc = new Scanner(System.in); 17 18 OutputStream out = socket.getOutputStream(); 19 PrintWriter pw = new PrintWriter(out);//字节输出流封装成字符输出流 20 while(true){ 21 System.out.println("请输入要发送的内容:"); 22 String str = sc.next(); 23 24 pw.println(str);//一定要带ln换行,因为客户端是用readerLine来接收数据的 25 pw.flush(); 26 } 27 } 28 }
服务端:
1 package com.demo1123; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.InputStreamReader; 7 import java.net.ServerSocket; 8 import java.net.Socket; 9 import java.util.zip.InflaterOutputStream; 10 11 public class Server { 12 public static void main(String[] args) { 13 try { 14 new Server().tcpServer(); 15 } catch (Exception e) { 16 e.printStackTrace(); 17 } 18 } 19 20 //tcp协议 21 public void tcpServer() throws Exception{ 22 //创建服务端,打开监听 23 ServerSocket server = new ServerSocket(9999); 24 System.out.println("服务已启动......."); 25 //获取网络套接字,套接字对象是专门负责数据的发送和接收 26 Socket socket = server.accept(); 27 System.out.println("客户端链接进来成功,客户端的ip是"+socket.getInetAddress()); 28 InputStream in = socket.getInputStream();//从数据包中读取数据输入流 29 //把字节流转换成字符流 30 InputStreamReader isr = new InputStreamReader(in);//字节流转换为字符流 31 //构造缓冲字符流来读取文本数据。好处是可以识别换行符 32 BufferedReader reader = new BufferedReader(isr); 33 String s; 34 while((s=reader.readLine())!=null){ 35 System.out.println("我是服务端,我接收到的数据是:"+s); 36 } 37 } 38 }