• 大小: 2.74MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-16
  • 语言: 其他
  • 标签:

资源简介

网络编程实用教程第二版_各章的示例源程序 网络编程实用教程第二版_各章的示例源程序

资源截图

代码片段和文件信息

//聊天程序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个文件信息

评论

共有 条评论

相关资源