资源简介
网络编程实用教程第二版_各章的示例源程序 网络编程实用教程第二版_各章的示例源程序
代码片段和文件信息
//聊天程序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题
评论
共有 条评论