⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serversock.cpp

📁 网上找到的linux下socket聊天源码
💻 CPP
字号:
/******************************************
** 文件名称:serversock.cpp              **
** 功    能:Linux下服务器程序           **
** 作    者:唐天明                      **
** 日    期:2008-11-17                  **
******************************************/
#include <iostream>
#include <cstring>
using namespace std;
#include <arpa/inet.h>
#include <netinet/in.h>		// for sockaddr_in
#include <sys/types.h>		// for socket
#include <sys/socket.h>		// for socket

const int serverport = 4444;				//服务器端口号
const int backlog = 10;						//最大连接量
const char * serv_ip = "60.12.107.181";		//服务器IP地址
const int maxsize = 100;

int main()
{
	int sockfd, isockclint;			//sockfd:用来监听;isockclint:用来传输
	int sendflag, recvflag;			//sendflag:发送标志;recvflag:接收标志
	
	char buf[maxsize];

	sockaddr_in serv_sock;			//服务器、本地socket
	sockaddr_in clint_sock;			//客户端socket
	
	//创建socket及判断是否成功
	if ((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
	{
		cout <<"server创建socket失败!!" <<endl;
		exit(1);
	}
	else
	{
		cout <<"server创建socket成功!!" <<endl;
	}
	
	//给sockaddr_in结构赋值
	serv_sock.sin_family = AF_INET;
	serv_sock.sin_port = htons(serverport);
	serv_sock.sin_addr.s_addr = inet_addr(serv_ip);
	bzero(&(serv_sock.sin_zero),8);
	
	//绑定及判断是否成功
	if (bind(sockfd, (struct sockaddr *)&serv_sock, sizeof(struct sockaddr)) == -1)
	{
		cout <<"server绑定失败!!" <<endl;
		exit(1);
	}
	else
	{
		cout <<"server绑定成功!!" <<endl;
	}
	
	//监听及判短是否成功
	if (listen(sockfd, backlog) == -1)
	{
		cout <<"server监听失败!!" <<endl;
		exit(1);
	}
	else
	{
		cout <<"server监听成功!!" <<endl;
	}
	
	//循环接收客户端发送的信息
	while(1)
	{
		
		//accept接收信息及判断是否接收成功
		int sin_size = sizeof(struct sockaddr_in);
		if ((isockclint = accept(sockfd,(struct sockaddr *) &clint_sock, (socklen_t*)&sin_size)) == -1)
		{
			cout <<"server接收失败!!" <<endl;
			exit(1);
		}
		else
		{
			cout <<"server接收成功!!" <<endl;
			break;
		}
	}

	//recv信息及判断是否接收成功
	recvflag = recv(isockclint,buf,maxsize,0);
	if (recvflag ==-1)
	{
		cout <<"server接收不成功!!" <<endl;
		exit(1);
	}
	else
	{
		cout <<"server接收成功!!" << buf <<endl;
	}

	//send信息及判断是否发送成功
	sendflag = send(isockclint,"Tim hello linux!!",100,0);
	if (sendflag == -1)
	{
		cout <<"server发送不成功!!" <<endl;
		exit(1);
	}
	else
	{
		cout <<"server 发送成功!!" <<endl;
	}
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -