簡體   English   中英

在C ...中寫一個客戶端 - 服務器程序在一張紙上

[英]Write a client-server program in C … on a sheet of paper

這是一個實際的面試問題。 O_O

讓我們不談談在面試中提出這樣一個問題的問題。

我想知道用於C或C ++的ol'TCP套接字方法的替代方法(例如庫)是什么樣的。

我對平台,編譯器等沒有任何假設 - 請選擇。

我不是要求你們實際編寫程序,而只是指出可能用於此目的的技術,並且可能是在C / C ++中使用該技術的示例或教程。

我對平台,編譯器等沒有任何假設 - 請選擇。

main() {
   system("apache -start")

   system("telnet 127.0.0.1 80") 

}

;-)

我會完全采用伯克利最簡單的插座方法。 我很無法獲得各種函數的所有參數,但我認為我將在所需的實際調用序列中非常接近(創建套接字,綁定,接受,讀/寫等)。

使用tcpd使您可以將服務器基於stdin / out而不是套接字。 知識tcpd應該給面試官IMO留下深刻印象。 :-)

這是一種可能性:CORBA

規格

IDL - > C 映射器

C ++ 教程

我不認為你完全可以忽視這個問題的“訪談”部分,因為這個問題太過模糊,不能在面試的背景下有用。 它也可能要求我們編寫一個“多用戶”程序。 面試官可能希望你提出更多問題。 最值得注意的是,要找出他要求IPC機制,協議的要點是什么(即他們如何溝通他們溝通?)。

如果沒有這些信息,您只需要假設最常見的:TCP / IP套接字,服務器偵聽,客戶端啟動連接,通信只是客戶端請求,然后是服務器響應。 在這種情況下,你可以在紙上寫下這個,

// server
s = socket();
listen (s);
bind (s, addr_port);
while ((c = accept (s)) != -1)
    spawn_thread_or_proc (handle_connection, c);


// client
s = socket();
connect (s, addr_port); 
...

證明你知道基本的電話。 如果需要更多細節,那么您可以充實參數,返回值,錯誤處理,讀/寫調用,線程/ proc機制,select / poll機制,dns查找機制。

DCOM和命名管道也可以是選項

如果你不害怕在文檔中弄臟,那么Boost.ASIO就是一個很棒的庫。 您還可以查看ACE,這是另一個在易於使用的界面中封裝Berkeley套接字的流行庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM