基於tcp——伺服器
程式設計步驟:1.建立乙個socket,用函式socket();
2.繫結ip位址、埠等資訊到socket上,用函式bind();
3.設定允許的最大連線數,用函式listen();
4.等待來自客戶端的連線請求,用函式accept();
5.收發資料,用函式send()和recv(),或者read()和write();
6.關閉網路連線。
基於tcp——客戶端
程式設計步驟:1.建立乙個socket,用函式socket();
2.設定要連線的伺服器ip位址和埠等屬性。
3.連線伺服器,用函式connect();
4.收發資料,用函式send()和recv(),或者read()和write();
5.關閉網路連線。
基於tcp——通訊模型
乙個程式例項
tcp_server.c如下:
#include
#include
#include
#include
#include
#include
#include
#include
#define portnumber 3333
int main(int argc, char *argv)
/* 伺服器端填充 sockaddr結構 */
bzero(&server_addr,sizeof(struct sockaddr_in)); // 初始化,置0
server_addr.sin_family=af_inet; // internet
server_addr.sin_addr.s_addr=htonl(inaddr_any); // (將本機器上的long資料轉化為網路上的long資料)和任何主機通訊 //inaddr_any 表示可以接收任意ip位址的資料,即繫結到所有的ip
//server_addr.sin_addr.s_addr=inet_addr("192.168.1.1"); //用於繫結到乙個固定ip,inet_addr用於把數字加格式的ip轉化為整形ip
server_addr.sin_port=htons(portnumber); // (將本機器上的short資料轉化為網路上的short資料)埠號
/* **sockfd描述符到ip位址 */
if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
/* 設定允許連線的最大客戶端數 */
if(listen(sockfd,5)==-1)
/* 結束通訊 */
close(sockfd);
exit(0); }
tcp_client.c如下:
#include
#include
#include
#include
#include
#include
#include
#include
#define portnumber 3333
int main(int argc, char *argv)
if((host=gethostbyname(argv[1]))==null)
/* 客戶程式開始建立 sockfd描述符 */
if((sockfd=socket(af_inet,sock_stream,0))==-1) // af_inet:internet;sock_stream:tcp
/* 客戶程式填充服務端的資料 */
bzero(&server_addr,sizeof(server_addr)); // 初始化,置0
server_addr.sin_family=af_inet; // ipv4
server_addr.sin_port=htons(portnumber); // (將本機器上的short資料轉化為網路上的short資料)埠號
server_addr.sin_addr=*((struct in_addr *)host->h_addr); // ip位址
/* 客戶程式發起連線請求 */
if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
/* 連線成功了 */
printf("please input char:/n");
/* 傳送資料 */
fgets(buffer,1024,stdin);
write(sockfd,buffer,strlen(buffer));
/* 結束通訊 */
close(sockfd);
exit(0); }
(完)
TCP程式設計
客戶端 匯入socket庫 import socket 建立乙個socket。af inet指ipv4協議,如果要用ipv6則指定af inet6.sock stream指定使用面向流的tcp協議 s socket.socket socket.af inet,socket.sock stream 建...
tcp程式設計
tcp連線屬於三次握手 syn 用於向對方發起連線請求的標誌,規定帶syn標誌的資料報佔乙個位元組的編號。j是順序號,ack 是用於應答的標誌,規定除了第一次的syn請求的資料報沒有ack,後面所有的資料報都帶有ack應答標誌。傳送j 1。j 1 5 j 6.三次目的 為了防止伺服器被惡意請求。資料...
TCP程式設計
匯入socket庫 import socket建立乙個socket,並指明使用的哪個協議,af inet指使用ipv4協議,sock stream指建立tcp協議 s socket.socket socket.af inet,socket.sock stream s.connect www.sina...