#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服务器在连接时发不出数据的问题进行详细分析,我们发现主要问题在于服务器端的线程同步机制不完善以及TCP/IP协议栈的配置不当。通过加强线程间的同步控制、优化TCP/IP协议栈配置以及改进数据包的...
本资源包"TCP.rar"包含了在Linux环境下实现TCP客户端和服务器端的应用程序示例,对于学习和理解TCP通信机制非常有帮助。 首先,让我们详细了解一下TCP的工作原理。TCP通过三次握手建立连接,这个过程确保了双方都能...
在这个场景中,我们关注的是一个基于LINUX服务器端和PHP客户端的TCP聊天程序。这个程序利用了socket通信来实现实时的数据交互,允许用户通过PHP客户端与Linux服务器进行对话。下面我们将深入探讨相关知识点。 首先...
在本文中,我们将深入探讨QT5如何实现网络通信中的TCP服务器端代码,并且该代码能够在Linux和Windows操作系统上运行。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在QT5中,...
在IT行业中,网络编程是一项重要的技能,特别是在服务器端开发中。本项目是一个基于Linux的TCP聊天室,它实现了用户注册、登录、私聊、群聊以及超级用户的一些管理功能,如禁言和踢人。这个系统是用多线程技术构建的...
本篇主要探讨Linux环境下的TCP服务器与客户端的实现及其相关知识点。 首先,TCP服务器是提供服务的一方,它监听特定端口,等待客户端的连接请求。在Linux中,我们通常使用socket编程接口来创建TCP服务器。这个接口...
在Linux环境下进行多线程网络编程,TCP服务器端的数据传输是一项关键任务,它涉及到网络通信、并发处理和系统调用等多个领域。以下是对这个主题的详细解析: 首先,TCP(Transmission Control Protocol)是一种面向...
在服务器端,需要注意处理TCP的连接建立(三次握手)和关闭(四次挥手)过程,以及可能的数据乱序、丢失或重复问题。 5. **错误处理**:在实现TCP服务器时,需要对各种可能出现的错误进行处理,例如套接字创建失败...
本篇文章将深入探讨如何使用C语言在Linux下编写TCP客户端和服务器端的数据传输代码。 首先,TCP服务器端的实现主要包括以下步骤: 1. **创建套接字**:在Linux中,通过调用`socket()`函数创建一个套接字,该函数...
《易语言Linux多进程TCP服务器详解》 在IT领域,构建高效的网络服务是至关重要的,尤其是在服务器端。这里我们将深入探讨一个使用易语言在Linux环境下实现的多进程TCP服务器。易语言,作为一款中文编程环境,以其...
TCP服务器端程序是一种基于传输控制协议(TCP)的网络应用程序,它允许一台计算机(服务器)接收并处理来自多个客户端的连接请求。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它确保数据能够按照...
在"www.pudn.com.txt"可能包含的示例代码中,可能会演示如何在Linux下创建TCP服务器和客户端程序。这些代码通常会涉及上述的socket API函数,展示如何进行TCP连接的建立、数据交换和连接关闭。 至于"Linux Tcp",...
总的来说,"异步TCP服务器-TCP类"文件应该是对以上这些概念和技术的实现,提供了一种高效的TCP服务器框架,适合处理高并发的网络通信场景。如果你正在开发这样的系统,理解并掌握这些知识点将对你的工作大有裨益。
本文件中包含两个文件TCP客户端client.c和TCP服务器server.c 文件用gcc即可完成编译 先运行服务器端,在运行客户端,可从客户端向服务器端发送数据,当输入“1”,结束连接,客户端释放连接,退出程序,服务器端释放...
标题"AHomeServer20190906_智能家居TCP连接服务器端_服务器_"揭示了这是一个关于2019年9月6日版本的智能家居系统,该系统涉及到TCP(Transmission Control Protocol)连接的服务器端实现。这个服务器端是用于接收和...
在"13-1TCP"这个示例中,可能包含了一个服务器端程序和一个客户端程序。服务器端会监听一个指定的端口,等待客户端连接。当客户端发起连接请求时,服务器端会接受连接,并为每个客户端创建一个新的套接字进行通信。...
在压缩包内的文件“file_server.c”和“file_client.c”很可能是两个示例程序,分别代表TCP服务器端和客户端的实现。通常,服务器端会监听一个特定的端口,等待客户端的连接请求。当客户端连接到服务器后,它们可以...
在IT领域,网络通信是不可或缺的一部分,而TCP(Transmission Control Protocol)套...文件列表中的“tcp程序”可能是服务器端和客户端的源代码,通过阅读和分析这些代码,可以进一步巩固和深化对TCP套接字编程的理解。
这是一个基于TCP协议的并发服务器程序,里面包含了客户端(client)和服务器(server)两端的代码,可以作为开发并发服务器的参考。这个程序只能工作在Linux环境下,可以在终端(Terminal)下直接运行
3. 建立连接:客户端使用`connect`来发起连接请求,服务器端使用`listen`设置最大连接队列长度,并用`accept`接收连接请求。 4. 数据传输:一旦连接建立,就可以通过`send`和`recv`发送和接收数据。TCP会保证数据的...