linux 上端口扫描,linux下的端口扫描技术!

这个是我在一本书上看到的,其中的一些代码我有所改变,写给各位好友共享一下!

#include

#include

#include

#include

#include

#include

#include

#include

#include "my_recv.h" // 自定义的头文件

#define SERV_PORT  4507 // 服务器端的端口

#define LISTENQ   12 // 连接请求队列的最大长度

#define INVALID_USERINFO 'n' // 用户信息无效

#define VALID_USERINFO  'y' // 用户信息有效

#define USERNAME  0 // 接收到的是用户名

#define PASSWORD  1 // 接收到的是密码

struct userinfo {   // 保存用户名和密码的结构体

char username[32];

char password[32];

};

struct userinfo users[ ] = {

{"linux", "unix"},

{"4507", "4508"},

{"clh", "clh"},

{"xl", "xl"},

{" "," "}     // 以只含一个空格的字符串作为数组的结束标志

};

// 查找用户名是否存在,存在返回该用户名的下标,不存在则返回-1,出错返回-2

int find_name(const char *name)

{

int i;

if (name == NULL) {

printf("in find_name, NULL pointer");

return -2;

}

for (i=0; users[i].username[0] != ' ';i++) {

if (strcmp(users[i].username, name) == 0) {

return i;

}

}

return -1;

}

// 发送数据

void send_data(int conn_fd, const char *string)

{

if (send(conn_fd, string, strlen(string), 0) < 0) {

my_err("send", __LINE__);  // my_err函数在my_recv.h中声明

}

}

int main()

{

int   sock_fd, conn_fd;

int   optval;

int   flag_recv = USERNAME; // 标识接收到的是用户还是密码

int   ret;

int   name_num;

pid_t   pid;

socklen_t&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值