首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP跨平台应用 » [原创]Linux下的网络编程(一) tcp套接字  


  作者:ljxl98
  注册时间:2004-04-05
  主题/回复:20/4
  积分:482
  等级:★★☆(五级)
  称号:略有小成

  ljxl98@eyou.com
  56163643
  www.

 

 发表:2005-03-08 22:15:17 阅读 2594 次 回复 0 次 得分0  |   字号 字色
[原创]Linux下的网络编程(一) tcp套接字
实例说明:

1  #include <stdio.h> /*标准函数库*/
2  #include <stdlib.h> /*exit(1)函数*/
3  #include <unistd.h>
4  #include <sys/types.h>
5  #include <sys/socket.h>
6  #include <netinet/in.h>
7  #include <arpa/inet.h>
8  #include <string.h> 

9  #define PORT 1234 /*定义端口号*/
10 #define BACKLOG 1 /*设定最大联接数目*/

11 main() /*主程序开始*/
12 {
13 int listenfd,connectfd; /*套接字描述符,一个是监听套接字.一个      是联接套接字*/
14 struct sockaddr_in server; /*服务器地址信息(INET协议簇地址结构*/
15 struct sockaddr_in client; /*客户端地址信息*/
16 socklent_t sin_size;  /* _socklen_t类型*/

17 if(listenfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
18 perror("Create socket failed.");
19 exit(1);
}
/*创建套接字*/
20 int opt=SO_REUSEADDR;
21 setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));/*将套接字设成地址可重用方式*/
22 bzero(&server,sizeof(server));/*将地址簇结构清零*/
23 server.sin_family=AF_INET;/*协议类型*/
24 server.sin_port=htons(PORT);/*端口.htons是host to net string*/
25 server.sin_addr.s_addr=htonl(INADDR_ANY);/*地址,自动设成本机可用地址*/

26 if(bind(listenfd,(struct sockaddr*)&server,sizeof(struct sockaddr))==-1)
{
27 perror("Bind error");
28 exit(1);
}
/*绑定服务器*/
29 if(listen(listenfd,BACKLOG)==-1)
{
30 perror("listen() error\n");
31 exit(1);
}
/*监听服务器*/
32 sin_size=sizeof(struct sockaddr_in);

33 if((connectfd=accept(listenfd,(struct sockaddr *)&client,&sin_size))==-1)
{
34 perror("accept() error\n")
35 exit(1);
}
/*接受客户联接,并创建联接套接字*/
36 printf("You got a connection from %s\n",inet_ntoa(client.sin_addr);
37 send(connectfd,"wellcome to my server.\n",22,0);/*发送信息*/
38 close(connectfd);/*关闭联接套接字*/
39 close(listenfd); /*关闭监听套接字*/
}
这时一个最简单的服务器程序,完成的功能就是接受客户端联接请求并发送字符"wellcome to my server".这也可以看成是个服务器程序模板.
 
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.005sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版