TCP庫的應用 排序

2022-08-15 10:15:14 字數 3014 閱讀 9943

client.c

#include"my_sort.h"  //my_sort 放在include中,裡面包含my_socket.h

#define my_ip "127.0.0.1"

#define my_port 6666

#define ser_ip "127.0.0.1"

#define ser_port 8888

int main()

server.c

#include"my_sort.h"

#define ip "127.0.0.1"

#define port 8888

int main()

my_sort.c

#include "my_sort.h"

void arr_init(int* arr, int len)

}void arr_show(int* arr, int len)

printf("\n");

}插入排序

void insert_sort(int* arr, int len)

else

}arr[index + 1] = key ;}}

static void swap(int* left, int* right)

//快速排序

void quik_sort(int* arr, int len)

else

}arr[index + 1] = key ;

}}else

}方法1

int partion(int* arr, int len)

if(low >= high)

else

while(low < high && arr[low] < key)

if(low < high)

}return low ;

}方法2 快慢指標

#include "my_sort.h"

int partion2(int *arr,int len)

{int fast,last,key;

last=0;

fast=1;

key=arr[0];

for(;fast上面的三個檔案都包含#include "my_sort.h"

我們來看看my_sort.h

#include"my_socket.h"

void arr_init(int* arr,int len);

void arr_show(int* arr,int len);

void insert_sort(int* arr,int len);

static void swap(int* left,int* right);

void quick_sort(int* arr,int len);

int partion(int* arr,int len);

原來它裡面已經包含my_socket.h

那就追蹤看看my_socket.h

#ifndef __my_socket_h__

#define __my_socket_h__

#include #include #include #include #include #include #include #include #define in

#define out

#define in_out

#define my_tcp 1

#define my_udp 2

typedef struct sockaddr* psa ;

typedef struct sockaddr_in sa ;

#define my_assert(flag,msg) ( (flag) ? null : ( fprintf(stdout,msg), exit(exit_failure) ) ) // null代表什麼也不做

void my_socket(out int *local_sfd, int protocal, char *local_ip, int local_port);

void my_listen(int local_sfd, int backlog);

void my_accept(out int *peer_sfd, int local_sfd, out psa peer_addr, in_out int *addr_len );

void my_connect(int local_sfd, psa peer_addr, int addr_len);

void my_recv(out int *recv_len, int peer_sfd, in_out void *base, int len);

void my_send(out int *send_len, int peer_sfd, void *base, int len);

void my_recvfrom(out int *recvfrom_len, int peer_sfd, in_out void *base, int len, out psa peer_addr, in_out int *addr_len);

void my_sendto(out int *sendto_len, int peer_sfd, out void *base, int len, psa peer_addr, int addr_len);

void my_close(int sfd);

#endif

//編譯

gcc -o c client.c my_sort.c -l my_socket -i /tmp/include

gcc -o s server.c my_sort.c -l my_socket -i /tmp/include

//執行結果如下

TCP重傳機制的學習應用

tcp協議是乙個可靠的協議。傳送方每次傳送乙個資料報,需要等到ack確認包再繼續傳送。發出去的請求包在規定時間內沒有收到ack,不管是請求包丟失,還是ack包丟失,還是網路延遲,這裡都是需要有個重傳機制。重傳機制是保障通訊鏈路可靠性的重要方式之一。tcp的重傳機制有兩種 超時重傳和快速重傳。超時重傳...

拓撲排序的應用

adjlist.h有向無環圖的鄰接表儲存結構 include include include define max vertex num 10 define max name 10 typedef char vertexdata max name typedef struct arcnode arc...

排序演算法的應用

假設序列中有n個元素,取其前k個組成乙個最大堆。由於最大堆的堆頂為序列中最大元素,所以組成的最大堆的堆頂是前k個元素中最大的元素。依次用第k 1到第n個元素與堆頂進行比較,如果比堆頂元素大,那麼該元素肯定不會是前k個最小的元素 如果比堆頂小,那麼堆頂的元素肯定不是前k個最小的元素,此時更新堆頂元素,...