C socket程式設計 實現服務端與客戶端的通訊

2021-08-03 00:00:13 字數 4553 閱讀 9065

**

伺服器端程式:

[cpp]view plain

copy

print?

//#include "winsock2.h"

#pragma comment(lib, "ws2_32.lib")

#include 

using

namespace std;  

int main(int argc, char* argv)  

//建立套接字

sserver = socket(af_inet, sock_stream, ipproto_tcp);      

if(invalid_socket == sserver)  

//伺服器套接字位址 

addrserv.sin_family = af_inet;  

addrserv.sin_port = htons(4999);  

addrserv.sin_addr.s_addr = inaddr_any;        

//繫結套接字

retval = bind(sserver, (lpsockaddr)&addrserv, sizeof(sockaddr_in));  

if(socket_error == retval)  

//開始監聽 

retval = listen(sserver, 1);  

if(socket_error == retval)  

//接受客戶端請求

sockaddr_in addrclient;  

int addrclientlen = sizeof(addrclient);  

sclient = accept(sserver,(sockaddr far*)&addrclient, &addrclientlen);  

if(invalid_socket == sclient)  

while(true)  

if(buf[0] == '0')  

break;  

cout << "客戶端傳送的資料: "

<< buf <

cout << "向客戶端傳送資料: " ;  

cin >> sendbuf;  

send(sclient, sendbuf, strlen(sendbuf), 0);  

}  //退出

closesocket(sserver);   //關閉套接字

closesocket(sclient);   //關閉套接字

wsacleanup();           //釋放套接字資源;

return 0;  

}   //

#include "winsock2.h"

#pragma comment(lib, "ws2_32.lib")

#include using namespace std;

int main(int argc, char* argv)

//建立套接字

sserver = socket(af_inet, sock_stream, ipproto_tcp);

if(invalid_socket == sserver)

//伺服器套接字位址

addrserv.sin_family = af_inet;

addrserv.sin_port = htons(4999);

addrserv.sin_addr.s_addr = inaddr_any;

//繫結套接字

retval = bind(sserver, (lpsockaddr)&addrserv, sizeof(sockaddr_in));

if(socket_error == retval)

//開始監聽

retval = listen(sserver, 1);

if(socket_error == retval)

//接受客戶端請求

sockaddr_in addrclient;

int addrclientlen = sizeof(addrclient);

sclient = accept(sserver,(sockaddr far*)&addrclient, &addrclientlen);

if(invalid_socket == sclient)

while(true)

if(buf[0] == '0')

break;

cout << "客戶端傳送的資料: " << buf <> sendbuf;

send(sclient, sendbuf, strlen(sendbuf), 0); }

//退出

closesocket(sserver); //關閉套接字

closesocket(sclient); //關閉套接字

wsacleanup(); //釋放套接字資源;

return 0;}

客戶端程式:

[cpp]view plain

copy

print?

#include "winsock2.h"

#include 

#pragma comment(lib, "ws2_32.lib")

using

namespace std;  

bool recvline(socket s, char* buf); //讀取一行資料

int main(int argc, char* argv)  

//建立套接字

shost = socket(af_inet, sock_stream, ipproto_tcp);  

if(invalid_socket == shost)  

//設定伺服器位址

servaddr.sin_family =af_inet;  

servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");  

servaddr.sin_port = htons((short)4999);  

int nservaddlen  = sizeof(servaddr);  

//連線伺服器

retval=connect(shost,(lpsockaddr)&servaddr, sizeof(servaddr));  

if(socket_error == retval)  

while(true)  

//recvline(shost, bufrecv);

zeromemory(bufrecv, buf_size);  

recv(shost, bufrecv,buf_size , 0); // 接收伺服器端的資料, 只接收5個字元

cout << endl <<"從伺服器接收資料:"

<< bufrecv;  

cout<<"\n";  

}  //退出

closesocket(shost); //關閉套接字

wsacleanup(); //釋放套接字資源

return 0;  

}  

#include "winsock2.h"

#include #pragma comment(lib, "ws2_32.lib")

using namespace std;

bool recvline(socket s, char* buf); //讀取一行資料

int main(int argc, char* argv)

//建立套接字

shost = socket(af_inet, sock_stream, ipproto_tcp);

if(invalid_socket == shost)

//設定伺服器位址

servaddr.sin_family =af_inet;

servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

servaddr.sin_port = htons((short)4999);

int nservaddlen = sizeof(servaddr);

//連線伺服器

retval=connect(shost,(lpsockaddr)&servaddr, sizeof(servaddr));

if(socket_error == retval)

while(true)

//recvline(shost, bufrecv);

zeromemory(bufrecv, buf_size);

recv(shost, bufrecv,buf_size , 0); // 接收伺服器端的資料, 只接收5個字元

cout << endl <<"從伺服器接收資料:"<< bufrecv;

cout<<"\n";

}//退出

closesocket(shost); //關閉套接字

wsacleanup(); //釋放套接字資源

return 0;

}

C Socket程式設計 服務端與客戶端 一

首先介紹客戶端,再介紹服務端 客戶端 在threadtestheart中,首先根據ip等新建乙個socket heartsocket物件,接著將要傳送的資料寫進乙個responseparam內,使用jsonconvert將要傳輸的資料json化,最後將json以位元組的形式通過socket傳送出去。...

C Socket程式設計 服務端與客戶端 二

在 一 中已經有了客戶端,這裡就不再介紹,這一篇中我們在服務端中加上多執行緒,結果會與 一 中有很大的不同,仔細比較,體會。與 一 不同的是每接收到乙個socket連線,服務端就將處理的操作拋到乙個新的執行緒裡去執行,這樣就不會產生 一 中的排隊現象。本篇客戶端結果 本篇服務端結果 改變後的服務端 ...

socket程式設計 實現服務端與客戶端的通訊

伺服器端程式 cpp view plain copy include winsock2.h pragma comment lib,ws2 32.lib include using namespace std intmain intargc,char argv 建立套接字 sserver socket...