Linux-C-Socket编程

王朝system·作者佚名  2006-02-14
窄屏简体版  字體: |||超大  

本文内容提到的套接字都是Berkely socket.

实用套接字的四个步骤:

1 分配空间和初始化

2 连接

3 传送数据

4 关闭

具体算法:

服务器端:

#include <sys/socket.h>

#include <netinet/in.h>

int socket_descriptor;

socket_descriptor = socket(AF_INET, SOCK_STREAM, 0);

int port = 8000;

struct sockaddr_in sin;

sin.sin_family = AF_INET;

sin.sin_addr.s_addr = INADDR_ANY;

pin.sin_port = htons(port);

bind(socket_descriptor,(struct socketaddr *)&sin, sizeof(sin) );

listen(socket_descriptor, 1024);

struct sockaddr_in pin;

int address_size;

int temp_socket_descriptor;

while(1) {

temp_socket_descriptor = accept(socket_descriptor,(struct socketaddr *)&pin, sizeof(address_size));

......

close(temp_socket_descriptor);

}

客户端:

#include <sys/socket.h>

#include <netinet/in.h>

#include <netdb.h> //直接影响sockaddr_in.sin_addr的填写

char * host_name = "127.0.0.1";

struct hostent * server_host_name;

server_host_name = gethostbyname(host_name);

int port = 8000;

struct sockaddr_in pin;

pin.sin_family = AF_INET;

pin.sin_addr.s_addr = htol(INADDR_ANY);

pin.sin_addr.s_addr = ((struct in_addr *)(server_host_name->h_addr))->s_addr; 或者 pin.sin_addr = *(struct in_addr *) server_host_name->h_addr;

pin.sin_port = htons(port);

int socket_descriptor;

socket_descriptor = socket(AF_INET, SOCK_STREAM, 0);

connect(socket_descriptor, (void *)&pin, sizeof(pin));

.......

close(socket_descriptor);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航