⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ip-win32.c

📁 Ubuntu packages of security software。 相当不错的源码
💻 C
字号:
/* * ip-win32.c * * Copyright (c) 2002 Dug Song <dugsong@monkey.org> * * $Id: ip-win32.c,v 1.5 2005/01/25 21:30:40 dugsong Exp $ */#ifdef _WIN32
#include "dnet_winconfig.h"
#else
#include "config.h"
#endif#include <winsock2.h>#include <ws2tcpip.h>#include <errno.h>#include <stdlib.h>#include "dnet.h"struct ip_handle {	WSADATA			wsdata;	SOCKET			fd;	struct sockaddr_in	sin;};ip_t *ip_open(void){	BOOL on;	ip_t *ip;	if ((ip = calloc(1, sizeof(*ip))) != NULL) {		if (WSAStartup(MAKEWORD(2, 2), &ip->wsdata) != 0) {			free(ip);			return (NULL);		}		if ((ip->fd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) ==		    INVALID_SOCKET)			return (ip_close(ip));				on = TRUE;		if (setsockopt(ip->fd, IPPROTO_IP, IP_HDRINCL,			(const char *)&on, sizeof(on)) == SOCKET_ERROR) {			SetLastError(ERROR_NETWORK_ACCESS_DENIED);			return (ip_close(ip));		}		ip->sin.sin_family = AF_INET;		ip->sin.sin_port = htons(666);	}	return (ip);}ssize_tip_send(ip_t *ip, const void *buf, size_t len){	struct ip_hdr *hdr = (struct ip_hdr *)buf;		ip->sin.sin_addr.s_addr = hdr->ip_src;		if ((len = sendto(ip->fd, (const char *)buf, (int) len, 0,	    (struct sockaddr *)&ip->sin, sizeof(ip->sin))) != SOCKET_ERROR)		return ((ssize_t) len);		return (-1);}ip_t *ip_close(ip_t *ip){	if (ip != NULL) {		WSACleanup();		if (ip->fd != INVALID_SOCKET)			closesocket(ip->fd);		free(ip);	}	return (NULL);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -