導航:首頁 > IDC知識 > c伺服器端socket

c伺服器端socket

發布時間:2021-03-29 18:33:33

1、用c語言socket編程伺服器和客戶端能相互傳文件,請問怎樣在伺服器端設置帳號和密碼,在下載時能顯示進度條

1、可以在client端登入時抄write(發送)帳號和密碼給server端,當server端接受到內容時判斷是否是你預設的帳號密碼,是則允許下載,否則關閉其socket。
2、是要客戶端看到進度條? 這樣就要要求在下載文件時server端要先發這個文件的大小給client端,client端就可以通過這個大小和接受到的位元組數比較後列印進度條(printf("#");).
文件大小可用int stat(const char *restrict path, struct stat *restrict buf);函數獲取。

2、C++網路編程(socket)我要寫一個伺服器端程序和一個客戶端程序

呵呵,當讓可以了。
1、首先我說一下他們的關系:
一個解決方案(*.sln)中可以包含多個項目(*.vcxproj);
這些項目可以是互不相關的,也可以是相關的;
2、下面說如何將你的兩個項目放在同一個解決方案里
你將一個的項目(B)拷貝到另外一個項目中(A)(其中文件夾A和B中含有*.vcxproj);
你有A.vcxproj和B.vcxproj兩個項目,他們分別為
文件夾A(其中含有A.vcxproj) 和 文件夾B(其中含有B.vcxproj)
解決方案(C.sln)和文件夾A和B在同一目錄下。
然後打開對應的解決方案,添加項目,將剛才的B項目添加即可;
3、設置啟動項目。

3、誰能用C語言寫個最簡單socket通信服務端和客戶端示例

網路的Socket數據傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似於打開文件的函數調用Socket(),該函數返回一個整型的Socket描述符,隨後的連接建立、數據傳輸等操作都是通過該Socket實現的。
下面用Socket實現一個windows下的c語言socket通信例子,這里我們客戶端傳遞一個字元串,伺服器端進行接收。
【伺服器端】
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#include <winsock2.h>
#define SERVER_PORT 5208 //偵聽埠
void main()

4、C語言socket編程要怎麼實現伺服器可以發消息給客戶端?

先要理解socket是什麼?
簡單的說socket是一個全雙工的通信通道,
即使用TCP或者UDP通信時均可以在發送消息的同時接受消息,
它不區分是否是伺服器。
根據這個概念你的問題就很好回答。
》當客戶端與伺服器連接後。有什麼方法使伺服器可以隨時隨地發消息給客戶端?
》我現在只能。客戶端發個消息給伺服器。伺服器才能發個消息給客戶端。也就是說客戶端不發消息。伺服器就沒法發消息給客戶端。
》求大牛給個思路。當連接後。客戶端與伺服器雙方可以隨時隨地通信!
使用多線程,一個維持接受邏輯,一個維持送信邏輯,即可完成同時接受及發送。
客戶端及伺服器端均做上述設置。
而你的做法是在一個線程中執行接受與送信,因此只能按照順序邏輯完成接收與送信。
關鍵點是多線程。

5、C用一個socket實現一個伺服器接收兩個客戶端的信息並保存

服務端監聽socket正常是不與任何客戶端socket進行通信的。監聽socket死循環作監聽工作,當收到一個連接之後,創建一個新的socket來與客戶端通信。這樣理論上一個服務端可以與上萬的客戶端通信。只是要記住,每個真正參與通信的socket都需要開兩個單獨的線程來進行消息的收發。

6、(用C語言實現)客戶端如何通過socket調用伺服器函數

socket是用來和伺服器通信的,無法直接調用伺服器函數。

要實現功能,可以和伺服器約定協議。
比如,在與伺服器通信連接後,發送一系列標識符,最後加一個函數id,表示要求伺服器調用約定的某一個函數。
伺服器在接收到後,執行對應的函數,將結果返回給客戶端即可。

7、C語言編程socket有個客服端和服務端怎麼建文件並且運行

網路的Socket數據傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似於打開文件的函數調用Socket(),該函數返回一個整型的Socket描述符,隨後的連接建立、數據傳輸等操作都是通過該Socket實現的。
下面用Socket實現一個windows下的c語言socket通信例子,這里我們客戶端傳遞一個字元串,伺服器端進行接收。

【伺服器端】
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#include <winsock2.h>
#define SERVER_PORT 5208 //偵聽埠
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int ret, nLeft, length;
SOCKET sListen, sServer; //偵聽套接字,連接套接字
struct sockaddr_in saServer, saClient; //地址信息
char *ptr;//用於遍歷信息的指針
//WinSock初始化
wVersionRequested=MAKEWORD(2, 2); //希望使用的WinSock DLL 的版本
ret=WSAStartup(wVersionRequested, &wsaData);
if(ret!=0)
{
printf("WSAStartup() failed!\n");
return;
}
//創建Socket,使用TCP協議
sListen=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sListen == INVALID_SOCKET)
{
WSACleanup();
printf("socket() faild!\n");
return;
}
//構建本地地址信息
saServer.sin_family = AF_INET; //地址家族
saServer.sin_port = htons(SERVER_PORT); //注意轉化為網路位元組序
saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //使用INADDR_ANY 指示任意地址

//綁定
ret = bind(sListen, (struct sockaddr *)&saServer, sizeof(saServer));
if (ret == SOCKET_ERROR)
{
printf("bind() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //關閉套接字
WSACleanup();
return;
}

//偵聽連接請求
ret = listen(sListen, 5);
if (ret == SOCKET_ERROR)
{
printf("listen() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //關閉套接字
return;
}

printf("Waiting for client connecting!\n");
printf("Tips: Ctrl+c to quit!\n");
//阻塞等待接受客戶端連接
while(1)//循環監聽客戶端,永遠不停止,所以,在本項目中,我們沒有心跳包。
{
length = sizeof(saClient);
sServer = accept(sListen, (struct sockaddr *)&saClient, &length);
if (sServer == INVALID_SOCKET)
{
printf("accept() faild! code:%d\n", WSAGetLastError());
closesocket(sListen); //關閉套接字
WSACleanup();
return;
}
char receiveMessage[5000];
nLeft = sizeof(receiveMessage);
ptr = (char *)&receiveMessage;
while(nLeft>0)
{
//接收數據
ret = recv(sServer, ptr, 5000, 0);
if (ret == SOCKET_ERROR)
{
printf("recv() failed!\n");
return;
}
if (ret == 0) //客戶端已經關閉連接
{
printf("Client has closed the connection\n");
break;
}
nLeft -= ret;
ptr += ret;
}
printf("receive message:%s\n", receiveMessage);//列印我們接收到的消息。

}
// closesocket(sListen);
// closesocket(sServer);
// WSACleanup();
}
【客戶端】
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#define SERVER_PORT 5208 //偵聽埠
void main()

8、C語言socket編程,伺服器和一個客戶端連接時,伺服器能正常收到信息,2個以上就出現BUG了

設置監聽socket的listen呢?
線程有自己的私有棧,即局部變數

9、C語言Socket伺服器怎麼給客戶端發消息

你的文件中的問題
// 會阻塞進程,直到有客戶端連接上來為止
// 既然是直到有客戶端連接上,那麼就要弄明白哪個是與客戶端連接的套接字
// sockClient就是與客戶端連接的套接字
sockClient = accept(sockServer, (SOCKADDR*)&addrClient, &len);
//接收並列印客戶端數據
recv(sockClient, recvBuf, 100, 0);
printf("%s\n", recvBuf);
// 所以此處,應該把sockServer改為sockClient
send(/*sockServer*/sockClient, sendBuf, 100, 0);

PS:伺服器客戶端通信,是要保持伺服器與客戶端的連接。
而不能這樣立即關閉,如果設置不對,立即關閉,緩沖區的數據是會丟失的。那客戶端也就不會再收到數據了。
你可以加Sleep(10000);來測是通信過程
//關閉socket
closesocket(sockClient);

10、Linux環境下C語言程序設計,伺服器通過socket連接後,向客戶端發送字元串「連接上了」。在伺服器上……

服務端:
先創建server_socket;
然後bind;
listen;
int clientsocket=accept(server_socket,(struct sockaddr*) &client_addr, &length);
printf("客戶端IP:%s",client_addr);
send to 客戶端.;
close(clientsocket);

客戶端:
創建client_socket;
connect;
close;

具體細節,您自內己去網容上搜搜哈

與c伺服器端socket相關的知識