**
伺服器端程式:
[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...