[英]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留下深刻印象。 :-)
我不認為你完全可以忽視這個問題的“訪談”部分,因為這個問題太過模糊,不能在面試的背景下有用。 它也可能要求我們編寫一個“多用戶”程序。 面試官可能希望你提出更多問題。 最值得注意的是,要找出他要求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.