導航:首頁 > IDC知識 > mfc伺服器

mfc伺服器

發布時間:2020-11-17 15:58:09

1、MFC中 伺服器的IP和埠 問題

只要客戶抄端有伺服器的襲IP和埠號,那麼客戶端就能跟伺服器連接上了嗎?
回答:正確。

還有就是我有一張圖片,裡面有幾個頭像,如何將這個頭像顯示到客戶端窗口中(就是聊天系統QQ那樣)。
回答:圖片也是數據,發送到窗戶端(發送一般由客戶端請求)。客戶端有就可以顯示了。

2、求MFC編寫的FTP伺服器和客戶端程序

我這抄有一個以前自學用的例子襲,你看看需要不?

運行程序,打開程序主界面,如圖1.1所示。輸入FTP伺服器IP地址、伺服器埠、用戶名及密碼,單擊「快速登錄」按鈕,連接FTP伺服器。連接成功後,設置下載文件存儲目錄,然後就可以上傳及下載文件了。下載文件過程中,可以暫停及刪除下載任務。

圖1.1FTP文件上傳下載模塊主窗口

在「功能選項」菜單下選擇「下載後關機」命令,文件下載完成後,自動關閉計算機。

3、MFC 讀取http文件伺服器上的文件列表,並選擇文件進行下載

你需要學會動態網頁製作,至少簡單的生成TXT文本,就是網站WEB程序讀取目錄中的文件列表,以TXT或XML輸出
你還需要學會MFC網路編程,就是MFC程序訪問/下載某個網址的網頁,其實就是讀取/下載網站WEB程序動態生成的TXT或者XML內容
當然你也可以靜態生成TXT或者XML放置在WEB伺服器上
顯示的話,就是ListControl,ListView一類,可自繪
下載文件和下載/讀取網頁基本相同,只是網頁是文本是string(當然原始也是BYTE[]),而文件就是很多個位元組是BYTE[]

總結的話,就是一個是伺服器端要放置有提供文件列表內容的文件
再一個就是MFC網路訪問/讀取這個文件,解析得到文件列表
學會使用ListControl
和讀取網頁一樣,按位元組接收即可

4、mfc怎麼與游戲伺服器

用socket TCP 與游戲伺服器通訊

5、MFC 伺服器如何連接多個客戶端並與其通信

如果說,你是伺服器,並且,你談到了連接,那麼我可以認為你是用的tcp

tcp下,你可以看一下相關的socket開發。

直接搜索vc socket tcp

6、MFC網路編程客戶端關閉,伺服器如何接收?

如果客戶端shutdown或socketclose,伺服器給客戶端send,或是在客戶端的socket上recv都會失敗。

7、mfc實現客戶端和伺服器端

伺服器端:(迭代的面向連接的伺服器實現daytime功能)
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <time.h>

#define SERVER_PORT 20000 // define the defualt connect port id
#define LENGTH_OF_LISTEN_QUEUE 10 //伺服器監聽隊列請求數目
#define BUFFER_SIZE 255
//#define WELCOME_MESSAGE "welcome to connect the server. "

int main(int argc, char **argv)
{
int servfd,clifd;//server socket client socket
struct sockaddr_in servaddr,cliaddr;

if ((servfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
printf("create socket error!\n");//錯誤判斷
exit(1);
}
bzero(&servaddr,sizeof(servaddr));//bzero ()置位元組字元串s的前n個位元組為零
servaddr.sin_family = AF_INET;//socket 域 tcp/ip 協議族
servaddr.sin_port = htons(SERVER_PORT);//host -network order
servaddr.sin_addr.s_addr = htons(INADDR_ANY);//host -network order

if (bind(servfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)//命名套接字,將其與IP地址及埠綁定
{
printf("bind to port %d failure!\n",SERVER_PORT);
exit(1);
}

if (listen(servfd,LENGTH_OF_LISTEN_QUEUE) < 0)// 監聽socket隊列
{
printf("call listen failure!\n");
exit(1);
}

while (1)
{
char buf[BUFFER_SIZE];
long timestamp;//時間戳應答報文(timestamp reply) 時間戳請求報文(timestamp request:) 時間戳請求報文
socklen_t length = sizeof(cliaddr);
clifd = accept(servfd,(struct sockaddr*)&cliaddr,&length);//接受請求,返回一個新套接字描述符
if (clifd < 0)
{
printf("error comes when call accept!\n");
break;
}
//strcpy(buf,WELCOME_MESSAGE);
//inet_ntop(INET_ADDRSTRLEN,cliaddr.sin_addr,buf,BUFFER_SIZE);

printf("from client,IP:%s,Port:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
timestamp = time(NULL);//當前時間
//strcat(buf,"timestamp in server:");
strcat(buf,ctime(×tamp));//strcat把src所指字元串添加到buf結尾處 .ctime把日期和時間轉換為字元串
send(clifd,buf,BUFFER_SIZE,0);
close(clifd);

}//exit
close(servfd);
return 0;
}
客戶端:
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>

#define SERVER_PORT 20000
//#define CLIENT_PORT ((20001+rand())%65536) // define the defualt client port as a random port

#define BUFFER_SIZE 255
//#define REUQEST_MESSAGE "welcome to connect the server.\n"

void usage(char *name)
{
printf("usage: %s IpAddr\n",name);
}

int main(int argc, char **argv)
{
int servfd,clifd,length = 0;
struct sockaddr_in servaddr,cliaddr;
socklen_t socklen = sizeof(servaddr);
char buf[BUFFER_SIZE];

if (argc < 2)
{
usage(argv[0]);
exit(1);
}

if ((clifd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
printf("create socket error!\n");
exit(1);
}
//srand(time(NULL));//初始化隨機數發生器
bzero(&cliaddr,sizeof(cliaddr));
cliaddr.sin_family = AF_INET;
cliaddr.sin_port = htons(CLIENT_PORT);
cliaddr.sin_addr.s_addr = htons(INADDR_ANY);

bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
inet_aton(argv[1],&servaddr.sin_addr);
servaddr.sin_port = htons(SERVER_PORT);
//servaddr.sin_addr.s_addr = htons(INADDR_ANY);

if (bind(clifd,(struct sockaddr*)&cliaddr,sizeof(cliaddr))<0)
{
printf("bind to port %d failure!\n",CLIENT_PORT);
exit(1);
}

if (connect(clifd,(struct sockaddr*)&servaddr, socklen) < 0)
{
printf("can't connect to %s!\n",argv[1]);
exit(1);
}

length = recv(clifd,buf,BUFFER_SIZE,0);
if (length < 0)
{
printf("error comes when recieve data from server %s!",argv[1]);
exit(1);
}
printf("from server %s :\n\t%s ",argv[1],buf);

close(clifd);
return 0;
}

8、MFC客戶端程序如何獲得伺服器端資料庫里的數據?

有遠程直接方法資料庫的方法。大中型資料庫基本都是網路資料庫,如常見的ORACLE / MSSQL / MYSQL等。專

MFC編程,對這些數據屬庫可以直接通過ADO進行查詢和修改,常用的辦法,就是用IP地址和實例(一般為默認)作為連接字元串中的SERVER即可。
對於網路型資料庫(ACCESS、DBASE不在此列),你不需要做伺服器端程序,只需要通過資料庫支持的通訊協議和方法進行遠程操作即可。

9、想了解一下編程思想: MFC 客戶端發送到伺服器的用戶名和密碼怎麼處理?

用戶名可以是明碼,密碼最簡單可以用散列演算法加密一次,比如MD5,稍微復雜點可專以從伺服器獲取一個隨機屬數,使用該隨機數和密碼組合後再進行散列,這樣別人就不能通過截取你的包的方式來偽造登錄,因為你的登錄每次都是不同的,且都是由伺服器決定的。

10、MFC 如何讓一個伺服器同時向多個客戶端發送信息

1. 伺服器需要先將客戶端的信息(socket)記錄在案,可以用數組,鏈表,vector都行
2. 如果伺服器要群發的時候,再循環中 按之前的記錄send給每個客戶端即可。
3. lz如有問題可追問。

與mfc伺服器相關的知識