(2)网络编程之绑定socket
来源:互联网 发布:阿里云负载均衡方案 编辑:程序博客网 时间:2024/05/17 22:58
Structure
/* Internet address. */struct in_addr {__u32s_addr;};/* Structure describing an Internet (IP) socket address. */#define __SOCK_SIZE__16/* sizeof(struct sockaddr)*/struct sockaddr_in { sa_family_tsin_family;/* Address family*/ unsigned short intsin_port;/* Port number*/ struct in_addrsin_addr;/* Internet address*/ /* Pad to size of `struct sockaddr'. */ unsigned char__pad[__SOCK_SIZE__ - sizeof(short int) -sizeof(unsigned short int) - sizeof(struct in_addr)];};
Src
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#define RECV_BUF_SIZE 1024#define CMD_PARAMS5int main(int argc, char *argv[]){int sockfd = 0;int ret = 0;char recv_buf[RECV_BUF_SIZE];struct sockaddr_in server_addr, client_addr;memset(recv_buf, 0, sizeof(recv_buf));memset(&server_addr, 0, sizeof(struct sockaddr_in));memset(&client_addr, 0, sizeof(struct sockaddr_in));if (argc != CMD_PARAMS){fprintf(stderr, "Usage: %s server port client port\n", argv[0]);return -1;}sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { fprintf(stderr, "Create socket fail\n"); return -1; }server_addr.sin_family = AF_INET;server_addr.sin_port = htons(atoi(argv[2]));ret = inet_aton(argv[1], (struct in_addr *)(&server_addr.sin_addr.s_addr));if (0 == ret){fprintf(stderr, "Server address %s error\n", argv[1]);return -1;}client_addr.sin_family = AF_INET;client_addr.sin_port = htons(atoi(argv[4]));ret = inet_aton(argv[3], (struct in_addr *)(&client_addr.sin_addr.s_addr));if (0 == ret){fprintf(stderr, "Client address %s error\n", argv[1]);return -1;}ret = bind(sockfd, (struct sockaddr *)(&client_addr), sizeof(struct sockaddr));if (-1 == ret){fprintf(stderr, "Bind client socket and address fail, %s\n", argv[3]);return -1;}ret = connect(sockfd, (struct sockaddr *)(&server_addr), sizeof(server_addr));if (ret != 0){fprintf(stderr, "Connect server %s:%d fail\n", argv[1], atoi(argv[2]));return -1; }recv(sockfd, recv_buf, RECV_BUF_SIZE, 0);printf("%s", recv_buf);close(sockfd);return 0;}
Makefile
target := bind_expobj = $(patsubst *.c, *.o, $(wildcard *.c))$(target): $(obj) gcc -Wall -o $(target) $(obj) clean: rm -r $(target) *.o
Do
root@ubuntuServer:~/test/networkprogram# makegcc -Wall -o bind_exp bindip.c root@ubuntuServer:~/test/networkprogram# ./bind_exp 192.168.1.109 22 192.168.1.109 6000SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu7root@ubuntuServer:~/test/networkprogram# netstat -an|grep 6000tcp 0 0 192.168.1.109:6000 192.168.1.109:22 TIME_WAIT
- (2)网络编程之绑定socket
- socket编程之设备绑定
- 网络编程之Socket
- 网络编程之SOCKET
- 网络编程之socket
- 网络编程之Socket编程
- iOS网络编程之Socket(客户端)
- linux网络编程之socket(UDP)
- 网络编程之Socket通信(Java)
- java网络socket编程(二)之Socket客户端
- 【网络编程】之三、socket网络编程
- 【网络编程】之三、socket网络编程
- socket网络编程(2)-socket网络结构类型
- socket编程之bind绑定失败
- android之socket网络编程
- glibc之socket网络编程
- Java网络编程之Socket
- socket网络编程之TCP_Server
- Mysql对事务的支持
- Android中的脑残设计
- cannot open shared object file 问题的解决
- C++等级考试结束
- Surface_3
- (2)网络编程之绑定socket
- 数据库连接字符串conn.open connStr(转集)
- getchar()和EOF总结
- 聚集索引和非聚集索引的区别
- Xcode免证书开发调试
- java的设计模式,学习心得总结-工厂模式
- [C] C程序100例_027
- 求三个数的中间数
- oracle中常用的分析函数总结