/*使用Linux自帶的庫文件編寫程序*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<unistd.h> //fork和close函數定義
#include<arpa/inet.h> //IP地址轉換函數的定義
#include<sys/types.h> //數據類型定義
#include<sys/socket.h> //提供socket函數及數據結構
#include<netinet/in.h> //定義了數據結構sockaddr_in
#define DEFAULT_PORT 8000 //設置默認端口號
#define MAXLINE 4096 //緩存大小
int main()
{
int socket_fd, connect_fd; //套接字描述符
struct sockaddr_in servaddr;
char buff[MAXLINE];
char sendline[MAXLINE];
char message[100]="Hello,you are connected!\n";
int n;
//====初始化socket,指定協議類型====
if((socket_fd=socket(AF_INET,SOCK_STREAM,0)) == -1)
{
printf("create socket error: %s(errno: %d)\n",strerror(errno),errno);
exit(0);
}
//======初始化套接字結構==========
memset(&servaddr,0,sizeof(servaddr)); //將指定字符串的字節設置爲常數,這裏清零套接字
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY); //設置IP地址,INADDR_ANY讓系統自動獲取本機的IP
servaddr.sin_port=htons(DEFAULT_PORT); //設置端口號
//======將協議地址和套接字綁定====
if((bind(socket_fd,(struct sockaddr*)&servaddr,sizeof(servaddr))) == -1)
{
printf("bind socket error: %s(errno: %d)\n",strerror(errno),errno);
exit(0);
}
//======開始監聽是否有客戶端鏈接======
if(listen(socket_fd,10) == -1)
{
printf("listen socket error: %s(errno: %d)\n",strerror(errno),errno);
exit(0);
}
printf("===============waiting for client's request===============\n");
//=======阻塞與accept,等待客戶端鏈接=======
if((connect_fd=accept(socket_fd,(struct sockaddr*)NULL,NULL) )== -1)
{
printf("accept socket error: %s(errno: %d)\n",strerror(errno),errno);
//continue;
}
printf("connect successful!\n\n");
while(1)
{
//每一次通訊都將緩存清空
//memset(&buff,0,sizeof(buff));
//memset(&sendline,0,sizeof(sendline));
bzero(buff,sizeof(buff));
bzero(sendline,sizeof(sendline));
n=recv(connect_fd,buff,MAXLINE,0); //接受客戶端傳來的數據,存在buff中
buff[n]='\0';
printf("receive message from client: %s\n",buff);
if(fork() == 0) //判斷爲子進程
{
printf("send msg to client: ");
fgets(sendline, 4096, stdin); //發送數據給客戶端
if(send(connect_fd,sendline,strlen(sendline),0) == -1)
perror("send error"); //將上一個函數出錯原因輸出到標準設備
//close(connect_fd);
//exit(0);
}
}
close(connect_fd);
close(socket_fd);
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
程序(单个服务器客户端通讯).rar (2个子文件)
client2.c 2KB
server2.c 3KB
共 2 条
- 1
资源评论
qq_1196581964
- 粉丝: 44
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功