黑马程序员---java基础---网络编程

来源:互联网 发布:电脑美工收入 编辑:程序博客网 时间:2024/05/22 10:52


------- android培训、java培训、期待与您交流! ----------

一.网络编程三要素:
 1.IP:
  二进制:四段8位的二进制表示;
  十进制:四段3位的0--255的数字;
 2.端口:
  1).物理端口:网卡口
  2).逻辑端口:由操作系统维护,Windows下0--65535
       0-1024由系统内部使用,我们尽量不要使用;
  我们讲的端口:逻辑端口:

 3.协议:
  1).UDP协议:
   A.将数据源和目的封装成数据包中,
   B.不需要建立连接;
   C.每个数据报的大小在限制在64k;
   D.因无连接,是不可靠协议;但速度快
  2).TCP协议:
   A.需要建立连接;
   B.在连接中进行大数据量传输;
   C.通过三次握手完成连接,是可靠协议;
   D.必须建立连接,效率会稍低
二.UDP协议编程:
 1.发送端:
  1.实例化DatagramSocket();
   DatagramSocket socket = new DatagramSocket();
  2.准备数据:
   IP: InetAddress add = InetAddress("Lenovo-PC");
   端口: int port = 8888;
   数据: byte[] byteArray = "你好".getBytes();
  3.准备数据报:
   DatagramPacket packet = new DatagramPacket(byteArray,
         byteArray.length,
         add,port);
  4.发送:
   socket.send(packet);
  5.释放资源:
   socket.close();
 2.接收端:
  //1.实例化DatagramSocket
  DatagramSocket socket = new DatagramSocket(8888);
  //2.准备一个空的byte[]数组
  byte[] byteArray = new byte[1024];
  //3.准备一个空的DatagramPacket
  DatagramPacket packet = new DatagramPacket(byteArray,byteArray.length);
  //4.等待信息
  socket.receive(packet);
  //5.获取信息
  byte[] infoArray = packet.getData();
  String info = new String(infoArray,0,packet.getLength());
  System.out.println("获取的信息:" + info);
  //6.释放资源
  socket.close();

   
三.TCP协议编程:
 1.发送端:
  //1.实例化一个Socket
  Socket socket = new Socket("192.168.38.91",8888);
  //2.获取输出流
  OutputStream out = socket.getOutputStream();
  //3.输出,一次输出一个字节数组
  out.write("你好".getBytes());
  //4.释放资源
  out.close();
  socket.close();
 2.接收端:
  //1.实例化一个ServerSocket
  ServerSocket server = new ServerSocket(8888);
  //2.获取输入流
  InputStream in = socket.getInputStream();
  //3.一次读取一个字节数组
  byte[] byteArray = new byte[1024];
  int len = in.read(byteArray);
  String s = new String(byteArray,0,len);
  System.out.println("接收到的数据:" + s);
  //4.释放资源
  in.close();
  sever.close();

下面我编写了关于多个客户端上传到一个服务器的例子,也算是对前面知识的一个小总结:

package cn.itcast.demo13.TCP练习_关于多个客户端上传到一个服务器的思考;public class Client {public static void main(String[] args) {//模拟10个客户端同时连接服务器for(int i = 1 ; i <= 10 ;i ++){new ClientThread(i).start();}}}
package cn.itcast.demo13.TCP练习_关于多个客户端上传到一个服务器的思考;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.net.Socket;public class ClientThread extends Thread {private int index;public ClientThread(int index){this.index = index;}@Overridepublic void run() {//连接服务器try {Socket socket = new Socket("192.168.30.241",8888);//网络输出流OutputStream netOut = socket.getOutputStream();//文件输入流FileInputStream fileIn = new FileInputStream("C:\\ccc\\" + index + ".png");//一次读取一个字节数组byte[] byteArray = new byte[1024];int len = 0;while((len = fileIn.read(byteArray)) != -1){netOut.write(byteArray,0,len);}//释放资源fileIn.close();netOut.close();socket.close();System.out.println("文件:" + index + ".png 上传完毕!");} catch (IOException e) {e.printStackTrace();} }}
package cn.itcast.demo13.TCP练习_关于多个客户端上传到一个服务器的思考;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server {public static void main(String[] args) throws IOException{ServerSocket server = new ServerSocket(8888);int index = 1;while(true){Socket socket = server.accept();//启动线程;new ServerThread(index++,socket).start();}}}
package cn.itcast.demo13.TCP练习_关于多个客户端上传到一个服务器的思考;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.Socket;public class ServerThread extends Thread {public int index ;private Socket socket ;//此索引,跟客户端的索引不是一一对应的;public ServerThread(int index,Socket socket){this.index = index;this.socket = socket;}@Overridepublic void run() {//获取网络输入流try {InputStream netIn = socket.getInputStream();FileOutputStream fileOut = new FileOutputStream(index + ".png");byte[] byteArray = new byte[1024];int len = 0;while((len = netIn.read(byteArray))  != -1){fileOut.write(byteArray,0,len);}fileOut.close();netIn.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//文件的输出流}}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑键盘不兼容怎么办 电脑不兼容xp 怎么办 百度软件不兼容怎么办 手机版本不兼容怎么办 绝地求生不兼容怎么办 办公软件不兼容怎么办 软件不兼容怎么办vivo cpu超过主板功率怎么办 手机游戏下不了怎么办 硬件系统不兼容怎么办 系统主板不兼容怎么办 安装软件不兼容怎么办 win10驱动不尖锐怎么办 苹果内存太小怎么办 内存太小怎么办手机 苹果手机屏幕不能滑动怎么办 vivo手机软件不兼容怎么办 微信无法录音怎么办 手机卡住了怎么办vivo 好钱包闪退怎么办 闲鱼认证失败怎么办 闲鱼买了假门票怎么办 买黄金买到假的怎么办 闲鱼被买家骗了怎么办 闲鱼上小视频没法保存怎么办 qq空间无法查看怎么办 华为手机电池不耐用怎么办 内内被动过怎么办 hp电脑开机黑屏怎么办 网上开店快递费怎么办 保温杯外壳掉漆怎么办 拖鞋前面磨脚怎么办 塑料拖鞋磨脚怎么办 路由器进不去设置界面怎么办 手机号丢了微信登不上怎么办 电脑总是闪黑屏怎么办 支付宝破产钱怎么办 淘宝号码注册过怎么办 农行k宝怎么办信用卡 电脑页面无法显示怎么办 对方银行停止收款怎么办