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個最小的元素,此時更新堆頂元素,...