C语言怎么判断字符YN,【求教】如何用c语言来判断网络是否通

【求教】怎么用c语言来判断网络是否通

比如 用ping 192.168.1.12 让c语言判断 是通还是不通怎么来实现

c

网络

------解决方案--------------------

仅供参考#include 

#include 

char cmdstr[256];

int i;

int YN(int k) {

FILE *f;

char fn[40];

char ln[80];

int yn=0;

sprintf(fn,"d:\\ping%d.txt",k);

f=fopen(fn,"r");

if (NULL!=f) {

fgets(ln,80,f);

fgets(ln,80,f);

fgets(ln,80,f);

if (1==fscanf(f,"Re%c",&yn)) yn='q'-yn;

fclose(f);

unlink(fn);

}

return yn;

}

void main() {

for (i=115;i<130;i++) {

sprintf(cmdstr,"cmd /c ping 192.168.2.%d -n 1 -w 1000 >d:\\ping%d.txt",i,i);

WinExec(cmdstr,SW_HIDE);

}

Sleep(3000);

for (i=115;i<130;i++) {

printf("%d 192.168.2.%d\n",YN(i),i);

}

}

//1 192.168.2.115

//0 192.168.2.116

//0 192.168.2.117

//0 192.168.2.118

//1 192.168.2.119

//0 192.168.2.120

//0 192.168.2.121

//0 192.168.2.122

//1 192.168.2.123

//0 192.168.2.124

//0 192.168.2.125

//1 192.168.2.126

//0 192.168.2.127

//1 192.168.2.128

//0 192.168.2.129

------解决方案--------------------

int Ping(LPCSTR pstrHost)

{

int nErrorNum=0;

SOCKET  rawSocket;

LPHOSTENT lpHost;

struct    sockaddr_in saDest;

struct    sockaddr_in saSrc;

DWORD  dwTimeSent;

DWORD  dwElapsed;

u_char    cTTL;

int       nLoop;

int       nRet;

// Create a Raw socket

rawSocket = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

if (rawSocket == SOCKET_ERROR)

{

ReportError("socket()");

return -1;

}

// Lookup host

lpHost = gethostbyname(pstrHost);

if (lpHost == NULL)

{

fprintf(stderr,"\nHost not found: %s\n", pstrHost);

return -2;

}

// Setup destination socket address

saDest.sin_addr.s_addr = *((u_long FAR *) (lpHost->h_addr));

saDest.sin_family = AF_INET;

saDest.sin_port = 0;

// Tell the user what we're doing

printf("\nPinging %s [%s] with %d bytes of data:\n",

pstrHost,

inet_ntoa(saDest.sin_addr),

REQ_DATASIZE);

// Ping multiple times

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值