(2)网络编程之绑定socket
2012-03-24 22:16
120 查看
Structure
Src
Makefile
Do
/* Internet address. */ struct in_addr { __u32 s_addr; }; /* Structure describing an Internet (IP) socket address. */ #define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */ struct sockaddr_in { sa_family_t sin_family; /* Address family */ unsigned short int sin_port; /* Port number */ struct in_addr sin_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_PARAMS 5 int 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_exp obj = $(patsubst *.c, *.o, $(wildcard *.c)) $(target): $(obj) gcc -Wall -o $(target) $(obj) clean: rm -r $(target) *.o
Do
root@ubuntuServer:~/test/networkprogram# make gcc -Wall -o bind_exp bindip.c root@ubuntuServer:~/test/networkprogram# ./bind_exp 192.168.1.109 22 192.168.1.109 6000 SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu7 root@ubuntuServer:~/test/networkprogram# netstat -an|grep 6000 tcp 0 0 192.168.1.109:6000 192.168.1.109:22 TIME_WAIT
相关文章推荐
- 网络socket编程相关函数
- android网络编程:Socket和Http
- 网络编程socket之domain socket
- Java网络编程(基于TCP的socket编程)
- [iOS进阶]Socket 网络编程
- 从Samples中入门IOS开发(四)------ 基于socket的网络编程
- Android学习笔记 Android网络编程之Socket&Http
- 网络编程_TCP_Socket通信_聊天室_私聊_构思_实现JAVA193-194
- 嵌入式操作系统uClinux下的网络socket编程
- 关于Socket、TCP/IP、HTTP、FTP及网络编程
- [网络编程]——网络编程_TCP_Socket通信_聊天室.雏形
- Linux网络编程socket错误分析
- 【手机网络游戏 编程】C#异步socketAPI调用 处理数据的流程
- linux网络编程:使用多进程实现socket同时收发数据
- android网络编程 -- Socket 通信(03) 点对点Android聊天室实现(带服务器) [附源码分析]
- 网络编程socket-SocketServer-FTP
- Python Socket 网络编程
- 网络编程--import--socket--telnet
- Linux网络编程socket错误分析
- java网络编程Socket