黑马程序员__网络编程

来源:互联网 发布:葫芦娃桌面软件 编辑:程序博客网 时间:2024/05/21 19:35

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

网络编程
针对不同的网络协议我们要采用不同的网络编程。
TCP(Tranfer Control Protocol),是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,serversocket,socket可以要求进行连接。
UDP(User Datagram Protocol),是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
TCP传输的效率没有UDP高,但是数据内容正确性好,不会丢包,根据他们的不同特点而运用在不同的场合。
在cs模式中:
我们首先得创建一个ServerSocket服务器端的Socket,监听一个端口。它只负责监听,他一旦有链接上来就将回话交给一个线程。然后就继续监听。但监听的端口以被占用将会有异常。
ServerSocket serverSocket=new ServerSocket(port); Socket socket=null;
while(true){
 socket=serverSocket.accept();
 SocketThread s=new SocketThread(socket);
 s.run();
 }
在线程的run方法中实现处理回话的处理。
服务器端获得客服端的Socket对象,用它来获得育克服端交流的输入输出流。
in=socket.getInputStream() ;out=socket.getOutputStream();
但输出流结束时,要out.flush(); 刷新输出流,使客服端马上收到该字符串
客服端:创建要连接的Socket,需指定要连接的端口号,和服务端IP;Socket socket=new Socket("127.0.0.1(serverIP)",port);
得到相应的IO就能与服务器进行交互;
在UDP通信协议下的网络编程:
DatagramSocket用于在程序之间建立传送数据报的通信连接,DatagramPacket则用来表示一个数据报。
DatagramScocket(int port); 创建监听端口
DatagramPacket(byte[] buf, int length, InetAddress address,int port);发送数据包
DatagramPacket(byte[] buf, int length); 接受数据包。
//接受消息的关键代码。
byte[] buffer = new byte[1024];
DatagramSocket datagramSocket = new DatagramSocket(port);
DatagramPacket datagramPacket = new DatagramPacket(buffer,buffer.length);
datagramSocket.receive(datagramPacket);
byte[] bs=datagramPacket.getData();

//发送信息的关键代码。
String message="xxxxx.......";
DatagramSocket sendSocket = new DatagramSocket();
DatagramPacket dataPack = new DatagramPacket(message.getBytes(),message.length(), InetAddress.getByName("127.0.0.1"), port);
try {
 sendSocket.send(dataPack);
 sendSocket.close();
} catch (Exception e) {
e.printStackTrace();
}

多播数据报套接字(多点传输套接字) MulticastSocket;
在API上有比较详细的方法和Demo;一般用于文件群发等。

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

原创粉丝点击