客戶程式:
#include "unp.h"
#include "myerror.h"
int main(int argc,char **argv)
//建立乙個tcp套接字,返回sockfd作為套接字描述符
int sockfd;
if ((sockfd = socket(af_inet,sock_stream,0)) < 0)
/*指定伺服器的ip位址與埠
*/struct sockaddr_in servaddr;
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = af_inet;
servaddr.sin_port = htons(9999);//解釋見伺服器程式
//inet_pton("呈現形式到數值"),把ascii命令列引數轉換為合適的格式
//argv[1]代表伺服器ip位址
if (inet_pton(af_inet,argv[1],&servaddr.sin_addr) < 0)
/*建立與伺服器的連線
connect函式應用於乙個tcp套接字時,將與由他的第二個引數只想的套接字位址結構
指定的伺服器建立乙個tcp連線。
在unp.h標頭檔案中,將sa定義為struct sockaddr。
*/if (connect(sockfd,(sa *)&servaddr,sizeof(servaddr)) < 0)
/*讀入並輸出伺服器的應答:
**使用tcp時必須小心,因為tcp是乙個沒有記錄邊界的位元組流協議
*/int n;
char recvline[maxline + 1];
//如果資料量很大,我們不能保證一次read就可一返回伺服器的所有應答。
//當read返回0(對端關閉連線)或者負值(發生錯誤)時,終止迴圈。
while ((n = read(sockfd,recvline,maxline)) > 0)
}if (n < 0)
/*exit終止程式執行,unix在乙個程序終止時總是關閉該程序所有開啟的
描述符,我們的tcp套接字就此關閉!
*/exit(0);
}
伺服器程式:
#include "unp.h"
#include int main(int argc,char **argv)
exit(0);
}
測試: 乙個簡單的時間獲取客戶程式
讓我們考慮乙個具體例子,引入將本書中遇到的許多概念和說法。實現乙個tcp當前時間查詢客戶程式的實現。該客戶程式與其伺服器建立乙個tcp連線後,伺服器直觀可讀格式簡單地送回當前時間和日期。獲取時間的伺服器端 include include include include include include...
乙個獲取時間的Python小程式
import ntplib from time import ctime c ntplib.ntpclient response c.request time.pool.aliyun.com print ctime response.tx time ntp是一種提高同步時間精度的網路協議,使用特定的...
乙個簡單的verlig程式 乙個簡單C程式的介紹
我們前面學了c語言的一些理論知識,今天通過乙個簡單的程式先來看一看c語言程式是什麼樣子。然後再對程式中的 進行介紹。這個語句的功能是進行有關的預處理操作。include稱為檔案包含命令,後面尖括號的內容稱為標頭檔案或首檔案。此處指包含stdio.h系統標頭檔案,在下面主函式中使用的printf 函式...