`
axengine
  • 浏览: 145680 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Linux TCP服务器 服务器端

阅读更多
#include <stdlib.h> 
#include <stdio.h> 
#include <errno.h> 
#include <string.h> 
#include <netdb.h> 
#include <sys/types.h> 
#include <netinet/in.h> 
#include <sys/socket.h> 

#define portnumber 3333

int main(int argc, char *argv[]) 
{ 
	int sockfd,new_fd; 
	struct sockaddr_in server_addr; 
	struct sockaddr_in client_addr; 
	int sin_size; 
	char hello[]="Hello! Are You Fine?\n"; 
	

	/* 服务器端开始建立sockfd描述符 */ 
	if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) // AF_INET:IPV4;SOCK_STREAM:TCP
	{ 
		fprintf(stderr,"Socket error:%s\n\a",strerror(errno)); 
		exit(1); 
	} 

	/* 服务器端填充 sockaddr结构 */ 
	bzero(&server_addr,sizeof(struct sockaddr_in)); // 初始化,置0
	server_addr.sin_family=AF_INET;                 // Internet
	server_addr.sin_addr.s_addr=htonl(INADDR_ANY);  // (将本机器上的long数据转化为网络上的long数据)和任何主机通信  //INADDR_ANY 表示可以接收任意IP地址的数据,即绑定到所有的IP
	//server_addr.sin_addr.s_addr=inet_addr("192.168.1.1");  //用于绑定到一个固定IP,inet_addr用于把数字加格式的ip转化为整形ip
	server_addr.sin_port=htons(portnumber);         // (将本机器上的short数据转化为网络上的short数据)端口号
	
	/* 捆绑sockfd描述符到IP地址 */ 
	if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1) 
	{ 
		fprintf(stderr,"Bind error:%s\n\a",strerror(errno)); 
		exit(1); 
	} 

	/* 设置允许连接的最大客户端数 */ 
	if(listen(sockfd,5)==-1) 
	{ 
		fprintf(stderr,"Listen error:%s\n\a",strerror(errno)); 
		exit(1); 
	} 

	while(1) 
	{ 
		/* 服务器阻塞,直到客户程序建立连接 */ 
		sin_size=sizeof(struct sockaddr_in); 
		if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1) 
		{ 
			fprintf(stderr,"Accept error:%s\n\a",strerror(errno)); 
			exit(1); 
		}
		fprintf(stderr,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr)); // 将网络地址转换成.字符串
		
		if(write(new_fd,hello,strlen(hello))==-1) 
		{ 
			fprintf(stderr,"Write Error:%s\n",strerror(errno)); 
			exit(1); 
		} 
		/* 这个通讯已经结束 */ 
		close(new_fd); 
		/* 循环下一个 */ 
	} 

	/* 结束通讯 */ 
	close(sockfd); 
	exit(0); 
} 
 
分享到:
评论

相关推荐

    linux TCP服务器连接时发不出数据

    通过对Linux TCP服务器在连接时发不出数据的问题进行详细分析,我们发现主要问题在于服务器端的线程同步机制不完善以及TCP/IP协议栈的配置不当。通过加强线程间的同步控制、优化TCP/IP协议栈配置以及改进数据包的...

    TCP.rar_LINUX TCP _linux 服务器_tcp linux_tcp 服务器

    本资源包"TCP.rar"包含了在Linux环境下实现TCP客户端和服务器端的应用程序示例,对于学习和理解TCP通信机制非常有帮助。 首先,让我们详细了解一下TCP的工作原理。TCP通过三次握手建立连接,这个过程确保了双方都能...

    LINUX 服务器端PHP客户端 TCP 聊天程序

    在这个场景中,我们关注的是一个基于LINUX服务器端和PHP客户端的TCP聊天程序。这个程序利用了socket通信来实现实时的数据交互,允许用户通过PHP客户端与Linux服务器进行对话。下面我们将深入探讨相关知识点。 首先...

    QT5网络通讯TCP服务器端代码,linux和win兼容,亲测可用

    在本文中,我们将深入探讨QT5如何实现网络通信中的TCP服务器端代码,并且该代码能够在Linux和Windows操作系统上运行。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在QT5中,...

    linux TCP聊天室 服务器,客户端

    在IT行业中,网络编程是一项重要的技能,特别是在服务器端开发中。本项目是一个基于Linux的TCP聊天室,它实现了用户注册、登录、私聊、群聊以及超级用户的一些管理功能,如禁言和踢人。这个系统是用多线程技术构建的...

    Linux TCP服务器与客户端

    本篇主要探讨Linux环境下的TCP服务器与客户端的实现及其相关知识点。 首先,TCP服务器是提供服务的一方,它监听特定端口,等待客户端的连接请求。在Linux中,我们通常使用socket编程接口来创建TCP服务器。这个接口...

    linux下多线程网络编程TCP服务器端数据传输代码

    在Linux环境下进行多线程网络编程,TCP服务器端的数据传输是一项关键任务,它涉及到网络通信、并发处理和系统调用等多个领域。以下是对这个主题的详细解析: 首先,TCP(Transmission Control Protocol)是一种面向...

    tcp_server_v1.rar_linux TCP并发_linux tcp server

    在服务器端,需要注意处理TCP的连接建立(三次握手)和关闭(四次挥手)过程,以及可能的数据乱序、丢失或重复问题。 5. **错误处理**:在实现TCP服务器时,需要对各种可能出现的错误进行处理,例如套接字创建失败...

    linux下网络编程TCP客户端和服务器端数据传输代码

    本篇文章将深入探讨如何使用C语言在Linux下编写TCP客户端和服务器端的数据传输代码。 首先,TCP服务器端的实现主要包括以下步骤: 1. **创建套接字**:在Linux中,通过调用`socket()`函数创建一个套接字,该函数...

    易语言linux多进程tcp服务器

    《易语言Linux多进程TCP服务器详解》 在IT领域,构建高效的网络服务是至关重要的,尤其是在服务器端。这里我们将深入探讨一个使用易语言在Linux环境下实现的多进程TCP服务器。易语言,作为一款中文编程环境,以其...

    TCP服务器端程序

    TCP服务器端程序是一种基于传输控制协议(TCP)的网络应用程序,它允许一台计算机(服务器)接收并处理来自多个客户端的连接请求。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它确保数据能够按照...

    Linux_Tcp.rar_LINUX TCP _linux TCP_tcp linux

    在"www.pudn.com.txt"可能包含的示例代码中,可能会演示如何在Linux下创建TCP服务器和客户端程序。这些代码通常会涉及上述的socket API函数,展示如何进行TCP连接的建立、数据交换和连接关闭。 至于"Linux Tcp",...

    异步TCP服务器-TCP类

    总的来说,"异步TCP服务器-TCP类"文件应该是对以上这些概念和技术的实现,提供了一种高效的TCP服务器框架,适合处理高并发的网络通信场景。如果你正在开发这样的系统,理解并掌握这些知识点将对你的工作大有裨益。

    Linux tcp通讯demo

    本文件中包含两个文件TCP客户端client.c和TCP服务器server.c 文件用gcc即可完成编译 先运行服务器端,在运行客户端,可从客户端向服务器端发送数据,当输入“1”,结束连接,客户端释放连接,退出程序,服务器端释放...

    AHomeServer20190906_智能家居TCP连接服务器端_服务器_

    标题"AHomeServer20190906_智能家居TCP连接服务器端_服务器_"揭示了这是一个关于2019年9月6日版本的智能家居系统,该系统涉及到TCP(Transmission Control Protocol)连接的服务器端实现。这个服务器端是用于接收和...

    13-1TCP.rar_LINUX TCP _linux TCP聊天_linux c++ tcp_linux tcp调试_tcp

    在"13-1TCP"这个示例中,可能包含了一个服务器端程序和一个客户端程序。服务器端会监听一个指定的端口,等待客户端连接。当客户端发起连接请求时,服务器端会接受连接,并为每个客户端创建一个新的套接字进行通信。...

    linux-TCP.rar_LINUX TCP _Linux 网络 编程_linux c_linux tcp传输_tcp lin

    在压缩包内的文件“file_server.c”和“file_client.c”很可能是两个示例程序,分别代表TCP服务器端和客户端的实现。通常,服务器端会监听一个特定的端口,等待客户端的连接请求。当客户端连接到服务器后,它们可以...

    linuxTCP套接字程序

    在IT领域,网络通信是不可或缺的一部分,而TCP(Transmission Control Protocol)套...文件列表中的“tcp程序”可能是服务器端和客户端的源代码,通过阅读和分析这些代码,可以进一步巩固和深化对TCP套接字编程的理解。

    基于TCP协议的Linux并发服务器程序

    这是一个基于TCP协议的并发服务器程序,里面包含了客户端(client)和服务器(server)两端的代码,可以作为开发并发服务器的参考。这个程序只能工作在Linux环境下,可以在终端(Terminal)下直接运行

    tcp.rar_linux TCP 封装_linux tcp通信库

    3. 建立连接:客户端使用`connect`来发起连接请求,服务器端使用`listen`设置最大连接队列长度,并用`accept`接收连接请求。 4. 数据传输:一旦连接建立,就可以通过`send`和`recv`发送和接收数据。TCP会保证数据的...

Global site tag (gtag.js) - Google Analytics