tcp :不記錄訊息邊界
udp:記錄訊息邊界
用到的結構體
struct sockaddr_un
;
例子:struct sockaddr_un serveraddr;
serveraddr.sun_family = af_unix;
= "server_socket";
strcpy(serveraddr.sun_path, 「server_socket」);
3、udp本地通訊
流程:
伺服器:
建立套接字 socket
填充本地資訊結構體 sockaddr_un
繫結套接字 bind
通訊 recvfrom/sendto
客戶端:
建立套接字 socket
填充本地資訊結構體 sockaddr_un
通訊 sendto/recvfrom (如果需要接受伺服器的資訊,需要繫結)
4、tcp本地通訊
伺服器(server)
#include
#include
#include
#include
#include
#include
//實現tcp本地通訊伺服器
#define n 128
#define errlog(errmsg) dowhile(0)
int main(int argc, const
char *argv)
; socklen_t addrlen = sizeof(struct sockaddr_un);
//建立套接字 socket
if((sockfd = socket(af_unix, sock_stream, 0)) < 0)
//填充本地資訊結構體 sockaddr_un
serveraddr.sun_family = af_unix;
strcpy(serveraddr.sun_path, "server_socket");
//繫結套接字 bind
if(bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)
//將套接字設定為監聽狀態 listen
if(listen(sockfd, 10) < 0)
//阻塞等待客戶端的連線請求 accept
if((acceptfd = accept(sockfd, (struct sockaddr *)&clientaddr, &addrlen)) < 0)
//通訊 recv/send
while(1)
printf("from client >>> %s\n", buf);
strcat(buf, " from client ...");
if(send(acceptfd, buf, n, 0) < 0)
}close(acceptfd);
close(sockfd);
return
0;}
客戶端(client)
#include
#include
#include
#include
#include
#include
//實現tcp本地通訊客戶端
#define n 128
#define errlog(errmsg) dowhile(0)
int main(int argc, const
char *argv)
; socklen_t addrlen = sizeof(struct sockaddr_un);
//建立套接字 socket
if((sockfd = socket(af_unix, sock_stream, 0)) < 0)
//填充本地資訊結構體 sockaddr_un
serveraddr.sun_family = af_unix;
strcpy(serveraddr.sun_path, "server_socket");
//傳送客戶端的連線請求 connect
if(connect(sockfd, (struct sockaddr *)&serveraddr, addrlen) < 0)
//通訊 recv/send
while(1)
if(recv(sockfd, buf, n, 0) < 0)
printf("%s\n", buf);
}close(sockfd);
return
0;}
4、udp本地通訊
伺服器(server)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define n 128
#define errlog(errmsg) dowhile(0)
int main(int argc, const
char *argv)
; //memset bzero 清空結構體(初始化)
//建立套接字
if((sockfd = socket(af_unix, sock_dgram, 0)) < 0)
//填充本地資訊結構體
serveraddr.sun_family = af_unix;
strcpy(serveraddr.sun_path, "server_socket");
//將套接字與ip位址和埠號繫結
if(bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)
while(1)
if(strncmp(buf, "quit", 4) == 0)
else}}
close(sockfd);
return
0;}
客戶端(client)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define n 128
#define errlog(errmsg) dowhile(0)
int main(int argc, const
char *argv)
; socklen_t addrlen = sizeof(struct sockaddr_un);
//建立套接字
if((sockfd = socket(af_unix, sock_dgram, 0)) < 0)
//填充網路資訊結構體
serveraddr.sun_family = af_unix;
strcpy(serveraddr.sun_path, "server_socket");
//填充客戶端網路資訊結構體
clientaddr.sun_family = af_unix;
strcpy(clientaddr.sun_path, "client_socket");
//繫結客戶端的資訊
if(bind(sockfd, (struct sockaddr *)&clientaddr, addrlen) < 0)
while(1)
if(strncmp(buf, "quit", 4) == 0)
else
printf("%s\n", buf);}}
close(sockfd);
return
0;}
TCP IP網路程式設計
tcp ip 是供已連線網際網路的計算機進行通訊的通訊協議。tcp ip 定義了裝置 並非只有計算機 如何連入網際網路,以及資料如何在它們之間傳輸的標準。ip internet protocol 網際網路協議。從這個名稱我們就可以知道ip協議的重要性。在現實生活中,我們進行貨物運輸時都是把貨物包裝成...
TCP IP網路程式設計
套接字 傳輸網路資料的軟體裝置。tcp的特點 可靠的 按序傳遞的 基於位元組的面向連線的資料傳輸方的協議。傳輸過程中資料不會消失,按序傳輸資料,傳輸的資料不存在資料邊界。udp的特點 不可靠的 無序的 以資料高速傳輸為目的的協議。強調快速傳輸而非傳輸順序,傳輸的資料可能丟失也可能損壞,傳輸的資料有資...
Java學習之網路程式設計 TCP IP
socket通訊 基於tcp協議,建議穩定連線的點對點的通訊。實時 快速 安全性高 占用系統資源多 效率低 請求 響應模式 request response 客戶端伺服器 socket 傳送tcp訊息 serversocket 建立伺服器 套接字 是一種程序間的資料交換機制。這些程序既可以在同一機器...