#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <pthread.h>
void *rec_data(void *fd);
void error(const char *msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
int sockfd, portno;
int * newsockfd;
socklen_t clilen;
struct sockaddr_in serv_addr, cli_addr;
if (argc < 2) {
fprintf(stderr,"ERROR, no port provided\n");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
if (bind(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0)
error("ERROR on binding");
listen(sockfd,5);
clilen = sizeof(cli_addr);
printf("wait for client connect\n");
while(1) {
pthread_t thread;
newsockfd = (int *)malloc(sizeof(int));
* newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr,
&clilen);
if (newsockfd < 0)
error("ERROR on accept");
if(pthread_create(&thread, NULL, rec_data, newsockfd)!=0) {
perror("ERROR on create thread");
break;
}
}
close(sockfd);
return 0;
}
void *rec_data(void *fd)
{
int n, newsockfd;
char buffer[256];
newsockfd=*((int*)fd);
while(1) {
bzero(buffer,256);
n = read(newsockfd,buffer,255);
if (n < 0) error("ERROR reading from socket");
if(strcmp(buffer,"quit\r\n") == 0) {
break;
}
printf("Here is the message: %s\n",buffer);
n = write(newsockfd,"I got your message\n",18);
if (n < 0) error("ERROR writing to socket");
}
free(fd);
close(newsockfd);
pthread_exit(NULL);
}
makefile:
all: server
server:server.o
gcc -g -o server server.o -lpthread
server.o:server.c
gcc -g -c server.c
clean:
rm -rf *.o server
分享到:
相关推荐
综上所述,这个"linux socket 多线程代码"项目涵盖了从基本的Socket编程到多线程通信的各个方面,通过学习和实践这些代码,开发者可以深入了解如何在Linux环境中高效地利用Socket和多线程技术进行网络通信。
"Linux下基于socket多线程并发通信的实现" 本文主要探讨Linux操作系统下基于socket多线程并发通信的实现。 socket是UNIX系统开发中的网络通信接口,可以对台计算机之间的通信规范进行合理定义,从而达到通信的目的...
本文将深入探讨Linux环境下的C++ Socket网络编程和多线程技术,基于提供的资料列表进行详细解析。 首先,"C++_Socket网络编程大全"是关于使用C++进行Socket编程的全面教程。Socket是网络通信的基础,它为应用程序...
总结来说,Linux下的多线程并发通信基于socket实现,结合TCP/IP协议,能够高效地处理多个客户端的并发请求。开发者需要理解套接字的概念、类型以及编程原理,同时掌握多线程编程技巧,包括线程安全、线程池等,以...
在Linux操作系统中,基于Socket的多线程编程是网络编程中的一个重要领域,它结合了Socket通信和多线程技术,可以实现高效的并发服务。Socket是网络通信的基本接口,TCP(Transmission Control Protocol)协议则提供...
本文将重点讨论"socket"、"linux"和"c++"环境下的多线程编程。这些技术结合在一起,可以构建高性能、高并发的网络服务。 首先,Socket编程是网络通信的基础,它允许应用程序通过网络发送和接收数据。在C++中,可以...
第二套:c语言Socket编程C语言SOCKET编程指南.c语言多进程多线程程.pdf,Linux Socket rogramming by Example.pdf,Linux 多线程等10多个资料....
在.NET平台上,SuperSocket以其易于扩展和高度定制化的特性,成为了Socket多线程编程的一个优选方案。 **一、SuperSocket的核心特性** 1. **多线程支持**:SuperSocket采用了多线程模型来处理客户端的连接,确保了...
linux_socket_多线程服务器端代码,包含两套实现,如有问题,欢迎留言指正2006sszgg@163.com。
基于 Linux 的 Socket 多线程通信 本文将详细介绍基于 Linux 的 Socket 多线程通信的知识点,包括进程间通信、Socket 的概念和基本操作等。 进程间通信 在网络中,进程之间如何通信是一个重要的问题。在本地,...
在Linux操作系统中,使用Socket和多线程技术可以构建一个简单的聊天室应用。Socket是网络通信的基本接口,它允许不同的进程或计算机之间进行数据交换。而多线程则可以提高程序的并发处理能力,使聊天室能同时处理多...
总结来说,这个项目是一个基础的TCP Socket多线程聊天室,涉及到网络编程、多线程编程以及简单的客户端-服务器通信模型。对于初学者,这是一个很好的学习实践平台,能够帮助理解TCP通信和多线程应用。而对于有经验的...
本示例主要探讨如何在Linux环境下利用多线程同时进行socket的读写操作,这对于提升程序的并发性能和效率至关重要。对于初学者来说,理解这一概念有助于深入学习网络编程和系统级编程。 首先,我们要了解什么是...
在Linux系统中,多线程Socket编程是一种常见且强大的网络通信技术。Socket接口提供了一种在不同进程间进行网络通信的机制,而多线程则允许程序并行执行多个任务,提高了程序的效率和响应性。本文将深入探讨如何在C++...
在Linux操作系统中,多线程编程与阻塞模式下的socket通信是网络编程的重要组成部分。本文将深入探讨如何在Linux环境下实现多线程的阻塞模式socket编程,以及它的工作原理和应用价值。 首先,理解“阻塞”和“非阻塞...
在linux下用socket的多线程通讯实现一个服务器和多个客户端之间的相互通讯。如果要实现多个和多个客户端通讯,则只需将里面的thread_client编译成多个文件即可。代码绝对是能用的~有什么疑问请留言~希望对大家伙有...
在Linux系统下进行多线程编程是开发高效并发应用程序的关键技术之一。本文将深入探讨Linux环境中的多线程概念、创建与管理线程的方法、线程同步与通信机制,以及多线程编程中可能遇到的问题和解决策略。 一、多线程...
本项目“Linux + socket多线程并发服务端+ 聊天室”旨在教授如何利用Linux环境下的socket编程实现一个支持多线程并发的聊天室服务端。下面我们将深入探讨相关知识点。 首先,让我们了解**Socket**。Socket是进程间...
在Linux系统中,多线程Socket通信是一种常见的网络编程方式,尤其在服务器开发中,它能够充分利用多核处理器的优势,提高服务的并发处理能力。本文将深入探讨如何在Linux环境下实现多线程Socket通信,结合给出的标题...
在Linux系统中,Socket编程是实现网络通信的基础,特别是在多线程环境中,它能提供高效的数据传输和并发处理能力。本教程将深入探讨Linux下的多线程无阻塞Socket编程,涉及TCP协议、线程管理和TCP连接池技术,旨在...