1. Trang chủ
  2. » Giáo án - Bài giảng

lập trình mạng nguyễn cao đạt bài tập sinhvienzone com

6 33 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 74,17 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Client yêu cầu gửi file theo cú pháp: FILE\n.. Có thể chat và gửi file đồng thời.. Số lượng byte gửi đi = chiều dài xâu*2 Mỗi 1 kết nối phải duy trì 1 buffer, truyền dl theo từng byte và

Trang 1

1 Viết ct chat+gửi file đơn giản (client+server) sử dụng mô hình WSAEventSelect

Có thể nhập và hiển thị tiếng Việt không dấu Có quản lý username, password Client yêu cầu gửi file theo cú pháp: FILE<Tên File><Nickname>\n Hiển thị tiến

độ gửi file Có thể chat và gửi file đồng thời

Nội dung lưu trong xâu có kiểu wchar_t Số lượng byte gửi đi = chiều dài xâu*2

Mỗi 1 kết nối phải duy trì 1 buffer, truyền dl theo từng byte và khi gặp dấu \n nó sẽ thực hiện trọn vẹn 1 câu lệnh ở trong buffer, và đẩy phần còn lại lên đầu buffer

Giao thức TEXT BASED

2 Thiết kế và cài đặt một giao thức cho phép gửi file và văn bản đồng thời trên một kết nối TCP

3 Thiết kế và cài đặt một giao thức cho phép gửi file và văn bản đồng thời trên một kết nối UDP

Chia file thành các mẩu nhỏ gửi đi: file file txt file…

Giao thức: BINARI BASED

UDP: File<=1500 byte

Bài 1: FILE *fp;

Fp = fopen(“A.JPG”,”rb”);

Long long filelen = 0;

Fseek(fp,0,SEEK_END);

Filelen = ftell(fp); // kich thuoc tep tin

Fseek(fp,0,SEEK_SET);

Fread, fwrite

Bài 2:

Typedef struct_PACKET

SinhVienZone.Com

Trang 2

{

DWORD bType;//00: Text, 01: Data, 02: File metadata

DWORD wLength; //Kich thuoc phan data cua Packet

BYTE bData[8192];

}

Typedef struct_FILE_METADATA

{

DWORD dwFileSize;

BYTE szFilename[256];

}

FILE_METADATA;

PACKET aPacket;

Gets(szXau);

aPacket.bType = 0;

aPacket.wLeng = strlen(szXau);

memcpy(aPacket.bData,szXau,aPacket.wLength);

Send(s,&aPacket,8+aPacket.wLength,0);

Recv(s,&aPacket,8,MSG_WAITALL);

Recv(s,aPacket.bData,aPacket.wLength,0);

SinhVienZone.Com

Trang 3

Gui file metadata

FILE_METADATA fileMeta;

fileMeta.dwFileSize = 123;

strcpy(fileMeta.szFileName,”A.JPG”);

PACKET aPacket;

aPacket.bType =2; // File metadata

aPacket.wLength = sizeof(FILE_METADATA);

memcpy(aPacket.bData,&fileMeta,aPacket.wLength);

send(s,&aPacket,8+aPacket.wLength,0);

switch(aPacket.bType)

{

Case 00: // In ra man hinh cau chat;

Break;

Case 01: // ghi du lieu ra file

Break;

Case 02: // Hoi nguoi dung???

}

Bai 3:

SinhVienZone.Com

Trang 4

Typedef struct_PACKET

{

DWORD bType;//00: Text, 01: Data, 02: File metadata

DWORD wLength; //Kich thuoc phan data cua Packet

DWORD dwChecksum;

DWORD dwOffset; //Offset cua du lieu trong file

BYTE bData[1400];

}

Typedef struct_FILE_METADATA

{

DWORD dwFileSize;

BYTE szFilename[256];

}

FILE_METADATA;

PACKET aPacket;

Gets(szXau);

aPacket.bType = 0;

aPacket.wLeng = strlen(szXau);

memcpy(aPacket.bData,szXau,aPacket.wLength);

Send(s,&aPacket,8+aPacket.wLength,0);

SinhVienZone.Com

Trang 5

Recv(s,&aPacket,8,MSG_WAITALL);

Recv(s,aPacket.bData,aPacket.wLength,0);

Gui file metadata

FILE_METADATA fileMeta;

fileMeta.dwFileSize = 123;

strcpy(fileMeta.szFileName,”A.JPG”);

PACKET aPacket;

aPacket.bType =2; // File metadata

aPacket.wLength = sizeof(FILE_METADATA);

memcpy(aPacket.bData,&fileMeta,aPacket.wLength);

send(s,&aPacket,8+aPacket.wLength,0);

switch(aPacket.bType)

{

Case 00: // In ra man hinh cau chat;

Break;

Case 01: // ghi du lieu ra file

Break;

SinhVienZone.Com

Trang 6

Case 02: // Hoi nguoi dung???

}

Chat: Xin chao

“\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00Xin chao”

Ket hop 2 bai: la su dung 1 socket, sdung ca 2 bai vao trong 1

SinhVienZone.Com

Ngày đăng: 30/01/2020, 22:44

🧩 Sản phẩm bạn có thể quan tâm

w