Socket 服务器端 简单实例
来源:互联网 发布:mac一般用什么办公软件 编辑:程序博客网 时间:2024/05/22 10:55
/**
* Tcp Server program, It is a simple example only.
* zhengsh 200520602061 2
* when client connect to server, send a welcome message and timestamp in server.
*/
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <time.h>
#include <arpa/inet.h>
#define SERVER_PORT 20000// define the defualt connect port id
#define LENGTH_OF_LISTEN_QUEUE 10//length of listen queue in server
#define BUFFER_SIZE 255
#define WELCOME_MESSAGE "welcome to connect the server. "
int main(int argc,char **argv)
{
printf("ok...\n");
int servfd, clifd;
struct sockaddr_in servaddr,cliaddr;
if ((servfd = socket(AF_INET,SOCK_STREAM, 0)) <0)
{
printf("create socket error!\n");
exit(1);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family =AF_INET;
servaddr.sin_port =htons(SERVER_PORT);
servaddr.sin_addr.s_addr =htons(INADDR_ANY);
int flag=1,len=sizeof(int);
if( setsockopt(servfd,SOL_SOCKET, SO_REUSEADDR, &flag, len) == -1)
{
perror("setsockopt\n");
exit(1);
}
if (bind(servfd,(structsockaddr*)&servaddr,sizeof(servaddr))<0)
{
printf("bind to port %d failure!\n",SERVER_PORT);
exit(1);
}
if (listen(servfd,LENGTH_OF_LISTEN_QUEUE) <0)
{
printf("call listen failure!\n");
exit(1);
}
while (1)
{
//server loop will nerver exit unless any body kill the process
char buf[BUFFER_SIZE];
long timestamp;
socklen_t length = sizeof(cliaddr);
printf("accept 1 ...\n");
clifd =accept(servfd,(structsockaddr*)&cliaddr,&length);
printf("accept 2...\n");
if (clifd < 0)
{
printf("error comes when call accept!\n");
break;
}
printf("accept 3...\n");
strcpy(buf,WELCOME_MESSAGE);
//inet_ntop(INET_ADDRSTRLEN,cliaddr.sin_addr,buf,BUFFER_SIZE);
printf("accept 4...\n");
printf("from client,IP:%s,Port:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
timestamp =time(NULL);
strcat(buf,"timestamp in server:");
strcat(buf,ctime(×tamp));
printf("send : [%s]\n", buf);
send(clifd,buf,BUFFER_SIZE,0);
char buf2[200] = {0 };
recv(clifd, buf2, 200, 0);
printf("buf2:[%s]\r\n", buf2);
sleep(30);
close(clifd);
}//exit
printf("exit...\n");
close(servfd);
return 0;
}
- Socket 服务器端 简单实例
- socket服务器端代码实例
- ios socket编程的客户端和服务器端通信简单实例
- c++Socket简单通信服务器端
- android--基于android平台socket服务器端实例
- socket编程---服务器端与客户端简单通信
- Socket 服务器端和客户端简单对话
- socket编程---服务器端与客户端简单通信
- socket编程(二)---- 简单的服务器端
- socket编程---服务器端与客户端简单通信
- Socket编程简单实例
- SOCKET简单实例
- Socket简单实例
- 简单socket编程实例
- Socket简单实例
- PHP Socket 简单实例
- android socket 简单实例
- Socket编程简单实例
- 将Asp.Net网站发布到IIS的四种方法及注意事项
- 云计算相关术语
- 写入txt 中文
- 【服务器架构】Skynet 设计综述
- 2013蓝桥杯预选:第39阶台阶
- Socket 服务器端 简单实例
- font-size:100%
- Selenium2(webdirver)入门之环境搭建(Java版)
- 辛星和您一起用纯CSS美化面包屑导航
- hdu 4862 Jump ( 最小费用流 )
- Convert.ToInt32()与int.Parse()的区别
- OC----——内存管理总结
- STL associative containers(关联容器)
- matlab下K-means Cluster 算法实现