sách gpt4 ăn đã đi

Ổ cắm Java nhận được một ví dụ đảm bảo rằng dữ liệu có thể được đọc

In lại Tác giả: qq735679552 Thời gian cập nhật: 28-09-2022 22:32:09 29 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này sử dụng Java socket để nhận và đảm bảo dữ liệu có thể được đọc. Các ví dụ được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ like nhé.

Việc tiếp nhận ổ cắm đảm bảo rằng dữ liệu có thể được đọc

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// private static byte[] readData(InputStream in,byte[] bData) ném IOException{
// int readLength = in.read(bData);
// nếu(readLength!=bData.length){
// byte[] temp2 = readData(in,new byte[bData.length-readLength]);
// System.arraycopy(temp2, 0, bData, readLength, temp2.length);
// trả về bData;
// }khác{
// trả về bData;
// }
// }
// private static void readData(InputStream in,byte[] bData) ném IOException{
// đọcDữ liệu(in,bData,0,bData.length);
// }
// private static void readData(InputStream in,byte[] bData,int off,int length) ném IOException{
// int readLength = in.read(bData, tắt, độ dài);
// nếu(readLength!=length){
// readData(trong, bData, readLength+off, chiều dài-readLength);
// }
// }
// private static void readData(InputStream in,byte[] bData,int off,int length) ném IOException{
//
// trong khi(đúng){
// int readLength = in.read(bData, tắt, độ dài);
// nếu(readLength!=length){
// tắt = readLength+tắt;
// chiều dài = chiều dài-đọcChiều dài;
// }khác{
// phá vỡ;
// }
// }
// }
// private static void readData(InputStream in,byte[] bData,int off,int length) ném IOException{
// int readLength = 0;
// LÀM{
// tắt = readLength+tắt;
// chiều dài = chiều dài-đọcChiều dài;
// readLength = in.read(bData, tắt, độ dài);
// }while(readLength!=length);
// }
     /**
      * Cuối cùng sử dụng phương pháp này
      * @param trong luồng đầu vào
          * @param bData đọc dữ liệu
      * @throws IOException 
      */
     riêng tư tĩnh vô hiệu readData(InputStream trong, byte [] bDữ liệu) ném Ngoại lệ IO
         số nguyên tắt = 0 ;
         số nguyên chiều dài = bData.length;
         số nguyên đọcChiều dài = 0 ;
         LÀM {
             tắt = readLength+tắt;
             chiều dài = chiều dài-đọcChiều dài;
             readLength = in.read(bData, tắt, độ dài);
         } trong khi (readLength!=chiều dài);
     }

socket nhận dữ liệu byte phần cứng và phân tích nó

Đây là lần đầu tiên tôi tiếp xúc với loại dự án này. Trong quá trình xử lý số liệu tôi nhận thấy có nhiều vấn đề tôi sẽ ghi lại để khắc sâu trí nhớ.

Phần cứng ghi dữ liệu vào bộ đệm và dữ liệu được truyền đi là byte.

Lúc đầu, chúng tôi nghĩ đến việc nhận nó dưới dạng luồng byte. Tuy nhiên, trong ngôn ngữ C, loại byte không có bit dấu và giá trị tối đa là 255. Trong Java, loại byte có bit dấu và giá trị tối đa là 127. Vấn đề nảy sinh khi khi dữ liệu byte nhận được vượt quá 127 thì bit đầu tiên sẽ được lấy làm bit dấu, một số bit cuối cùng sẽ được bù, đảo ngược và cộng thêm một để trở thành số âm. (Phương pháp xử lý sẽ được viết sau).

Sau này muốn lười biếng không xử lý dữ liệu nên tính đến việc dùng mảng char để nhận. Char có tổng cộng mười sáu bit, chắc chắn có thể tiếp nhận dữ liệu tám bit do phần cứng gửi đến. Nhưng khi nhận lại dữ liệu thì vẫn xảy ra sự cố. Khi chuyển đổi luồng byte thành luồng ký tự và lưu vào mảng char, kiểu char sẽ tự động xử lý dữ liệu. Trong kiểu char, giá trị thập lục phân tối đa tương ứng với một ký tự là 7F, nhưng dữ liệu được phần cứng truyền đi có thể như 0X80, 0X8D. Khi kiểu char nhận dữ liệu lớn hơn 7F thì không thể xử lý được, các ký tự sẽ bị định dạng bị cắt xén và dữ liệu cũng sẽ thay đổi tương ứng. Việc lưu trữ dữ liệu một cách chính xác khi nhận được là điều không thể chứ đừng nói đến việc xử lý và xác minh dữ liệu một cách chính xác sau này. bỏ cuộc.

Cuối cùng, chúng ta phải quay lại hướng nhận byte. Sau khi thảo luận với đồng nghiệp, đối với dữ liệu vượt quá kiểu byte Java, tính chính xác của dữ liệu có thể được đảm bảo bằng cách xử lý phù hợp và lưu trữ trong Int.

Phương pháp điều trị:

Đánh giá dữ liệu trong mảng byte Khi nó là số âm, nó được AND với 0xff và được lưu trữ trong mảng Int để đảm bảo rằng dữ liệu là bình thường.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ServerSocket máy chủSocket;
     thử {
  máy chủSocket = mới Máy chủ ổ cắm( 9090 );
  Hệ thống.out.println( "***Đang chờ kết nối máy khách***" );
  Ổ cắm socket = serverSocket.accept();
  InputStream là = socket.getInputStream();
   
  byte [] ngày = mới byte [ 500 ];
  số nguyên count = is.read(dữ liệu);
   
  số nguyên [] Định dạng dữ liệu= mới số nguyên [ 500 ];
  ( số nguyên tôi= 0 ;i
   nếu như (dữ liệu[i]< 0 ){
    dataFormat[i]=dữ liệu[i]& 0xff ;
   } khác {
    dataFormat[i]=dữ liệu[i];
   }
  }
      } nắm lấy (IOException e) {
  e.printStackTrace();
      }

Trên đây là kinh nghiệm cá nhân của mình, hi vọng có thể cho các bạn tham khảo và mong các bạn có thể ủng hộ mình.

Liên kết gốc: https://blog.csdn.net/guanzhengyinqin/article/details/79402165.

Cuối cùng, bài viết về ví dụ về java socket nhận được đảm bảo có thể đọc dữ liệu có tại đây. Nếu bạn muốn biết thêm về phiên bản java socket nhận được đảm bảo có thể đọc dữ liệu, vui lòng tìm kiếm bài viết CFSDN hoặc. tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

29 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress