資源簡介
網絡編程實用教程第二版_各章的示例源程序 網絡編程實用教程第二版_各章的示例源程序

代碼片段和文件信息
//聊天程序talk.c
#include??
#include??
#pragma?comment(lib“ws2_32.lib“)
#include?
//#include?
#include?
//#include?
//#include?
#include?
/*?中斷處理過程?*/
void?int_proc(?int?signo)?{?}?
void?main(int?argc?char**?argv)??
{
??struct?sockaddr_in??daddr?saddr??cmpaddr;
??SOCKET?sockfd;
??int?timer?=?3;
??char?buffer[1024];
??int?addrlen?n;
??/*?判斷用戶輸入的命令行是否正確,如果有錯,提示用法?*/
??if?(argc?!=?5)?{
?????printf(“用法:%s?目的IP??目的端口??源IP??源端口\n“?argv[0]);
?????exit(0);
??}?
??/*?設定中斷處理函數,并設置時間限制?*/
//signal(SIGALRM?int_proc);
//alarm(timer);
/*?建立數據報套接字?*/
sockfd?=?socket(AF_INET?SOCK_DGRAM?0);
if?(sockfd?0)?{
fprintf(stderr?“socket?error!\n“);
exit(1);
}?
/*?為結構變量daddr的各個字段賦值?*/
addrlen?=?sizeof(struct?sockaddr_in);
memset(&daddr?0?addrlen);
daddr.sin_family?=?AF_INET;
daddr.sin_port?=?htons(atoi(argv[2]));
if?(daddr.sin_addr.s_addr=inet_addr(argv[1])?<=?0)?{
fprintf(stderr?“Invaild?dest?IP!\n“);
exit(0);
}
/*?為結構變量saddr的各個字段賦值?*/
addrlen?=?sizeof(struct?sockaddr_in);
memset(&saddr?0?addrlen);
saddr.sin_family?=?AF_INET;
saddr.sin_port?=?htons((u_short)(atoi(argv[4])));
if?(saddr.sin_addr.s_addr=inet_addr(argv[3])?<=?0)?{
fprintf(stderr?“Invaild?source?IP!\n“);
exit(0);
}?
/*?綁定地址?*/
if?(bind(sockfd?(LPSOCKADDR)&saddr?addrlen)?0?)?{
??fprintf(stderr?“bind?local?addr?error!\n“);
??exit(1);
}
/*?從標準輸入獲得字符串,并發送給目標地址?*/
if?(fgets(buffer?1024?stdin)?==?NULL?)?exit(0);
if?(?sendto(?sockfd?buffer?strlen(buffer)?0?(LPSOCKADDR)&daddr?addrlen))?{
fprintf(stderr?“sendto?error!\n“);
exit(2);
}?
while?(1)?{
/*?接收信息并顯示?*/
n?=?recvfrom(?sockfd?buffer?1024?0?(LPSOCKADDR)&cmpaddr?&addrlen);
if?(n?0)?{
/*?根據errno中的數值是否為常量EWOULDBLOCK,來區別超時錯和一般性錯。?*/
if?(?errno?==?WSAECONNABORTED)?
fprintf(stderr?“recvfrom?timeout?error!\n“);
else?{
fprintf(stderr?“recvfrom?error!\n“);
exit(3);
}
}?else?{
/*?比較數據報來源地址與保存的目標地址是否一致?*/
/*?不同則返回非0,結束此循環?*/
if?(memcmp((LPSOCKADDR)&cmpaddr?(LPSOCKADDR)&daddraddrlen))?continue;
buffer[n]?=?0;
printf(?“Received:?%s“?buffer);
}
/*?從標準輸入獲得字符串,并發送給目標地址?*/
if?(fgets(buffer?1024?stdin)?==?NULL?)?exit(0);
if?(?sendto(sockfd?buffer?strlen(buffer)?0?(LPSOCKADDR)&daddr?addrlen))?{
fprintf(stderr?“sendto?error!\n“);
exit(3);
}
}
/*?關閉套接字?*/
closesocket(sockfd);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4276??2010-09-25?20:44??網絡編程實用教程第二版_各章的示例源程序\第02章\對等模式\z2p53\z2p53\z2p53.dsp
?????文件????????244??2010-09-25?20:44??網絡編程實用教程第二版_各章的示例源程序\第02章\對等模式\z2p53\z2p53\z2p53.plg
?????文件???????2622??2010-09-25?20:43??網絡編程實用教程第二版_各章的示例源程序\第02章\對等模式\z2p53\z2p53\z2p53talk.cpp
?????文件????????541??2010-09-25?20:41??網絡編程實用教程第二版_各章的示例源程序\第02章\對等模式\z2p53\z2p53.dsw
?????文件??????41984??2010-09-25?21:01??網絡編程實用教程第二版_各章的示例源程序\第02章\對等模式\z2p53\z2p53.ncb
?????文件??????48640??2010-09-25?21:01??網絡編程實用教程第二版_各章的示例源程序\第02章\對等模式\z2p53\z2p53.opt
?????文件????????770??2010-09-25?20:40??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2.dsw
?????文件??????58368??2010-09-25?21:00??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2.ncb
?????文件??????53760??2010-09-25?21:00??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2.opt
?????文件??????15134??2010-09-13?05:48??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2p42client\Debug\z2p42server.obj
?????文件???????3335??2010-09-13?21:31??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2p42client\z2p42client.cpp
?????文件???????4338??2010-09-13?06:27??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2p42client\z2p42client.dsp
?????文件????????256??2010-09-25?20:36??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2p42client\z2p42client.plg
?????文件???????3278??2010-09-13?21:46??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2p42server\z2p42server.cpp
?????文件???????4344??2010-09-12?18:46??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2p42server\z2p42server.dsp
?????文件????????256??2010-09-25?20:36??網絡編程實用教程第二版_各章的示例源程序\第02章\面向連接的套接字\z2p42server\z2p42server.plg
?????文件????????881??2005-07-29?11:55??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\CSocket.cpp
?????文件????????598??2005-07-28?13:39??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\CSocket.h
?????文件????????841??2005-07-29?09:46??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\Msg.cpp
?????文件????????546??2005-07-29?09:46??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\Msg.h
?????文件???????3507??2005-07-26?09:39??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\ReadMe.txt
?????文件???????1078??2005-07-26?09:39??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\res\tc.ico
?????文件????????394??2005-07-26?09:39??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\res\tc.rc2
?????文件???????1185??2005-07-26?10:05??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\resource.h
?????文件????????204??2005-07-26?09:39??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\StdAfx.cpp
?????文件???????1102??2005-07-26?09:39??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\StdAfx.h
?????文件??????21452??2005-07-29?22:28??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\tc.aps
?????文件???????1466??2005-07-30?14:41??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\tc.clw
?????文件???????2101??2005-07-26?09:39??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\tc.cpp
?????文件???????4328??2005-07-26?10:31??網絡編程實用教程第二版_各章的示例源程序\第05章\多點聊天\3_tc_ts純對話框\tc\tc.dsp
............此處省略302個文件信息
- 上一篇:maxsc
ript零起點系列教程 完整 - 下一篇:浙江大學2010年數學建模B題
評論
共有 條評論