黑马程序员__网络编程

---------------------- <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>、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值