[1] TCP编程的主要步骤
客户端(client):
1.创建Socket对象,构造方法的形参列表中需要InetAddress类对象和int型值,用来指明对方的IP地址和端口号。
2.通过Socket对象的getOutputStream()方法返回OutputStream抽象类子类的一个对象,用来发送输出流。
3.通过输出流的write方法输出具体的信息。
4.关闭相应的流和Socket对象。
服务端(server):
1.创建ServerSocket类的对象,在构造器中指明端口号。
2.调用ServerSocket类对象的accept()方法,返回一个Socket类的实例。
3.通过Socket实例的getInputStream()方法获取一个输入流,用来接收来自客户端的信息。
4.利用输入流接收数据,并处理数据。
5.关闭相应的流、Socket对象、ServerSocket对象。
[2] Java源程序 ( 注意:在测试时先开启服务端方法server(),再开启客户端方法client() )
1 package pack01; 2 3 import java.io.*; 4 import java.net.*; 5 import org.junit.Test; 6 7 public class TestNet1 { 8 9 @Test //***********************客户端测试方法*********************** 10 public void client() { 11 12 Socket socket = null; //建立客户端网络套接字 13 OutputStream socket_os = null; //客户端输出流 14 15 try { 16 //1.获取本机环路地址 17 InetAddress inet = InetAddress.getByName("127.0.0.1"); 18 19 //2.创建Socket对象 20 socket = new Socket(inet, 10000); 21 22 //3.获取输出流 23 socket_os = socket.getOutputStream(); 24 25 //4.客户端输出信息 26 socket_os.write( "客户端发送信息".getBytes() ); 27 28 } catch (IOException e) { 29 e.printStackTrace(); 30 31 } finally { 32 33 try { //关闭输出流 34 socket_os.close(); 35 } catch (IOException e) { 36 e.printStackTrace(); 37 } 38 39 try { //关闭客户端套接字 40 socket.close(); 41 } catch (IOException e) { 42 e.printStackTrace(); 43 } 44 } 45 } 46 47 @Test //***********************服务端测试方法*********************** 48 public void server() { 49 50 ServerSocket serSocket = null; 51 Socket socket = null; 52 InputStream socket_is = null; 53 54 try { 55 serSocket = new ServerSocket(10000); 56 socket = serSocket.accept(); //获取服务端套接字 57 socket_is = socket.getInputStream(); //获取输入流 58 59 byte[] b = new byte[100]; //用于接收信息的字节数组 60 int len; 61 StringBuffer sb = new StringBuffer(); 62 63 while( (len = socket_is.read(b)) != -1 ) { 64 sb.append( new String(b,0,len) ); //将字节信息连续保存在buffer数组里 65 } 66 System.out.println("来自" + socket.getInetAddress().getHostName() + "的信息:"); 67 System.out.println( sb ); 68 69 } catch (IOException e) { 70 e.printStackTrace(); 71 72 } finally { 73 74 try { //关闭输入流 75 socket_is.close(); 76 } catch (IOException e) { 77 e.printStackTrace(); 78 } 79 80 try { //关闭Socket对象 81 socket.close(); 82 } catch (IOException e) { 83 e.printStackTrace(); 84 } 85 86 try { //关闭ServerSocket对象 87 serSocket.close(); 88 } catch (IOException e) { 89 e.printStackTrace(); 90 } 91 } 92 } 93 94 }
注:希望与各位读者相互交流,共同学习进步。