功能:分為客戶端和伺服器,client可向server傳送字串,傳送檔案。
環境:ubuntu
編譯方法:
client.c: gcc -o client client.c
原始碼:
server.c
#include#include#include
#include
#include
#include
#include
#define maxbuf 256
#define port 7787
intmain()
clen = sizeof
(client_addr);
memset(&server_addr,0,sizeof
(server_addr));
/*將已開闢的server_addr的前sizeof(server_addr)個位元組設定為0
*/server_addr.sin_family =af_inet;
/*sin_family指代協議族,在socket程式設計中只能是af_inet
*/server_addr.sin_addr.s_addr=htonl(inaddr_any);
/*inaddr_any表示可以和任何的主機通訊
*/server_addr.sin_port=htons(port);/*
sin_port儲存埠號
*/if(bind(ssock,(struct sockaddr *)&server_addr,sizeof(server_addr))<0
)
if(listen(ssock,8)<0
) csock=accept(ssock,(struct sockaddr *)&client_addr,(socklen_t*)&clen);
/*accept(int sockfd, struct sockaddr *addr,int *addrlen)
addr,addrlen是用來給客戶端的程式填寫的,伺服器端只要傳遞指標就可以了
accept成功時返回最後的伺服器端的檔案描述符,這個時候伺服器端可以向該描述符寫資訊了
失敗時返回-1
*/while(1
) fclose(stdout);
freopen(
"/dev/tty
","w
",stdout);//
puts(
"file received success!");}}
else
if(strcmp(buf,"
%$#@
")==0)}}
close(csock);
return0;
}
client.c
#include#include#include
#include
#include
#include
#include
#define maxbuf 256
#define port 7787
intmain()
clen = sizeof
(server_addr);
memset(&server_addr,0,sizeof
(server_addr));
server_addr.sin_family =af_inet;
server_addr.sin_addr.s_addr=inet_addr("
127.0.0.1");
//inet_addr:ip轉換為4位元組整形,使用時需要根據服務端ip進行更改
server_addr.sin_port =htons(port);
if(connect(ssock,(struct sockaddr *)&server_addr,clen)<0
)
while(1
)
else
if(ch==2)
}if(cnt)//
傳送最後不足maxbuf的部分
send(ssock,
"@#$%
",maxbuf,0);//
表示傳送完畢
fclose(stdin);
freopen(
"/dev/tty
","r
",stdin);}}
else
break
; }
close(ssock);
return0;
}
Socket程式設計 伺服器向客戶端傳送資料
最近想學習一下底層的socket程式設計的東西,了解一下具體的原理,而不只是使用封裝好的類庫。從c語言中文網教程上學習的,記錄一下吧。使用vs2010為開發環境,可能由於缺少庫的原因?codeblocks沒法使用.伺服器向客戶端傳送資料 hello world 執行結果 客戶端 源 伺服器端 inc...
C TCP 伺服器客戶端Socket程式設計
server.cpp include include using namespace std include define buf size 64 pragma comment lib,ws2 32.lib int main 建立監聽的socket sserver socket af inet,so...
客戶端 伺服器程式設計模型
客戶端和伺服器是程序,不是主機。客戶端 伺服器模型中的基本操作是事務。乙個客戶端 伺服器事務由四步組成 1.當乙個客戶端需要服務時,它向伺服器傳送乙個請求,發起乙個事務。例如,當web瀏覽器需要乙個檔案時,它就傳送乙個請求給web伺服器。2.伺服器收到請求後,解釋它,並以適當的方式操作它的資源。例如...