#include "stdafx.h"
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
#define buf_size 64
int _tmain(int argc, _tchar* argv)
wsadatawsd;
socketshost;
sockaddr_inservaddr;
charbuf[buf_size];
intretval;
//初始化socket動態庫
if(wsastartup(makeword(2,2),&wsd)!= 0){
printf("wsastartupfailed !\n");
return1;
//建立用於通訊的socket
shost= socket(af_inet,sock_stream,ipproto_tcp);
if(invalid_socket== shost){
printf("socketfailed !\n");
wsacleanup();
return-1;
//設定伺服器socket位址
servaddr.sin_family= af_inet;
//使用者根據實際情況更改ip位址
servaddr.sin_addr.s_un.s_addr= inet_addr("127.0.0.1");
//在實際應用中,建議將伺服器的ip位址和埠號儲存在配置檔案中
servaddr.sin_port= htons(9990);
//計算位址的長度
intsserveraddlen = sizeof(servaddr);
//連線伺服器
retval= connect(shost,(lpsockaddr)&servaddr,sizeof(servaddr));
if(socket_error== retval){
printf("connectfailed !\n");
closesocket(shost);
wsacleanup();
return-1;
//迴圈向伺服器傳送字串,並顯示反饋資訊
//傳送「quit」將使伺服器程式退出,同時客戶端程式自身也將退出
while(true){
//向伺服器傳送資料
printf("pleaseinput a string to send: ");
std::stringstr;
//接收輸入的資料
std::getline(std::cin,str);
//將使用者輸入的資料複製到buf中
zeromemory(buf,buf_size);
strcpy(buf,str.c_str());
//向伺服器傳送資料
retval= send(shost,buf,strlen(buf),0);
if(socket_error== retval){
printf("sendfialed !\n");
closesocket(shost);
wsacleanup();
return-1;
//接收伺服器回傳的資料
retval= recv(shost,buf,sizeof(buf)+1,0);
printf("recvfrom server: %s\n",buf);
//如果收到「quit」則退出
if(strcmp(buf,"quit")== 0){
printf("quit!\n");
break;
//釋放資源
closesocket(shost);
wsacleanup();
//暫停,按任意鍵繼續
system("pause");
return0;
瘦客戶端 胖客戶端 智慧型客戶端
胖客戶端模式將應用程式處理分成了兩部分 由使用者的桌面計算機執行的處理和最適合乙個集中的伺服器執行的處理。乙個典型的胖客戶端包含乙個或多個在使用者的pc上執行的應用程式,使用者可以檢視並運算元據 處理一些或所有的業務規則 同時提供乙個豐富的使用者介面做出響應。伺服器負責管理對資料的訪問並負責執行一些...
胖客戶端 瘦客戶端和富客戶端
以c s結構開發的網路應用程式,需要為客戶端開發專用的客戶端軟體,相對而言其客戶端比較龐大,在客戶端可以實現很多功能,分擔伺服器的負擔,屬於胖客戶端型別。以b s結構開發的web應用,其客戶端只是乙個瀏覽器,所有業務邏輯由伺服器端進行處理,相對而言客戶端比較瘦小,故稱為瘦客戶端。目前比較流行的一種開...
TCP socket實現客戶端和伺服器端通訊
import socket def main 建立套接字 tcp client socket socket.socket socket.af inet,socket.sock stream 目的資訊 server ip 127.0.0.1 server port 60000 鏈結伺服器 tcp cl...