當前位置:首頁 » 編程語言 » c語言ip地址轉換

c語言ip地址轉換

發布時間: 2023-07-01 17:05:38

A. C語言如何將整數轉換成IP地址,請寫一個完整的C語言程序謝謝

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
//#include <unistd.h>
#include <windows.h>
#include <sys/types.h>
#include <sys/stat.h>
//#include <sys/socket.h>
//#include <arpa/inet.h>
#include <winsock.h>
#define DEBUG 0
#define MAX_BACKLOG 32
#define MAX_BUF_LEN 12000
#define NAME "name=dcee"
#define CODE "password=201101"
int net_create(char *net_html) ;
void http_process(int connfd);
int main(int argc, char *argv[])
{
int ret;
int listenfd;
int opt = 1;
int connfd;
struct sockaddr_in servaddr;
struct sockaddr_in cliaddr;
socklen_t addrlen;
unsigned short port;
if (argc != 2) {
printf("Usage: %s port\n", argv[1]);
exit(EXIT_FAILURE);
}
listenfd = socket(AF_INET, SOCK_STREAM, 0);
if (listenfd == -1) {
perror("server->socket");
exit(EXIT_FAILURE);
}
setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
memset(&servaddr, 0, sizeof(struct sockaddr_in));
port = atoi(argv[1]);
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(port);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
ret = bind(listenfd, (struct sockaddr *)&servaddr, sizeof(struct sockaddr_in));
if (ret == -1) {
perror("server->bind");
close(listenfd);
exit(EXIT_FAILURE);
}
ret = listen(listenfd, MAX_BACKLOG);
if (ret == -1) {
perror("server->listen");
close(listenfd);
exit(EXIT_FAILURE);
}
while (1) {
addrlen = sizeof(struct sockaddr_in);
memset(&cliaddr, 0, sizeof(struct sockaddr_in));
connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &addrlen);
if (connfd == -1) {
perror("server->accept");
continue;
}
#ifdef DEBUG
printf("server->accept: a new client is comming, and the connfd is %d\n", connfd);
#endif
http_process(connfd);
close(connfd);
}
close(listenfd);
exit(EXIT_SUCCESS);
}

這是完整代碼,下面的是綁定ip和埠的部分
setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
memset(&servaddr, 0, sizeof(struct sockaddr_in));
port = atoi(argv[1]);
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(port);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
port的值是預定義的8080;
INADDR_ANY意思是本機ip,你也可以用數字,不過要符合標准

B. 在不使用socket函數的基礎上,編寫一個C語言程序實現將以字元串形式表現的IP地址轉換為以32位

#include<stdio.h>

unsignedintip_addr(constchar*ip)
{
inta,b,c,d;
if(sscanf(ip,"%d.%d.%d.%d",&a,&b,&c,&d)==4)
{
return(a<<24)|(b<<16)|(c<<8)|d;
}

return0;
}

intmain()
{
printf("0x%08X ",ip_addr("192.168.1.100"));

return0;
}

Linux 下編譯及測試結果:

[root@localhosterr_log]#g++test.cpp-g3-Wall-otest
[root@localhosterr_log]#./test
0xC0A80164
熱點內容
emobile7伺服器地址如何查看 發布:2025-04-22 22:32:51 瀏覽:763
房間的秘密碼是什麼 發布:2025-04-22 22:32:43 瀏覽:120
文件夾前面多了選擇框 發布:2025-04-22 22:32:40 瀏覽:703
迅雷網ftp 發布:2025-04-22 22:30:02 瀏覽:622
滑鼠驅動源碼 發布:2025-04-22 22:29:55 瀏覽:768
如何開發android應用 發布:2025-04-22 22:18:55 瀏覽:880
醫保卡密碼從哪裡看 發布:2025-04-22 22:14:34 瀏覽:260
地鐵逃生安卓更新後為什麼進不去 發布:2025-04-22 22:13:49 瀏覽:443
java枚舉使用 發布:2025-04-22 22:06:56 瀏覽:257
分解壓與K 發布:2025-04-22 22:06:40 瀏覽:835