#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 3333
#define BACKLOG 10
main()
{
int sockfd,client_fd;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket创建出错!"); exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) {
perror("bind出错!");
exit(1);
}
if (listen(sockfd, BACKLOG) == -1) {
perror("listen出错!");
exit(1);
}
)
我不太清楚的地方在 bing()函数的时候 为什么上面声明的sockaddr_in my_addr类型 并且也赋值了 但是在bing函数的时候第二个参数和第三个参数却又用了sockaddr?
1楼大哥 我就是不知道为什么在前面进行了给sockaddr_in的成员赋值 后面在用bing()的时候反而不用了这个结构了 用一个没有赋值的机构体 这是为什么? 是因为sockaddr和sockaddr_in之间的指针可以互相转换?他们的首地址可以转换?如果这样的话 那sockadd_in的sizeof应该比sockadd的sizeof大啊 不解不解