Tcp多线程服务器和客户端程序

//服务器程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#define PORT 8082
#define BUFSIZE 512
char buf[BUFSIZE+1];

void* fun(void* x)
{
       //printf("enter thread!\r\n");
       int new_fd=*((int*)x);
   while(1)
       {
       int z=read(new_fd,buf,BUFSIZE);//第 6 步 读取套接字
   if(z==0){printf("client close !");break;};
   buf[z]='\0';
   printf("%s\r\n",buf);//打印
   };
}
int newfd[512];
int inewfd=0;
int main()
{
   //第 1 步 创建套接字
   int sockfd=socket(AF_INET,SOCK_STREAM,0);
   //第 2 步 设置地址结构体
   struct sockaddr_in svraddr;
   svraddr.sin_family=AF_INET;//使用 internet 协议
   svraddr.sin_port=htons(PORT);
   inet_aton("0.0.0.0",&svraddr.sin_addr);
   //第 3 步 绑定
   int ret=bind(sockfd,(struct sockaddr*)&svraddr,sizeof(svraddr));
       if(ret<0){printf("error bind!\r\n");exit(-1);};
   //第 4 步 监听
   listen(sockfd,128);
   while(1)
   {
   newfd[inewfd++]=accept(sockfd,NULL,NULL); //第 5 步 接收
   pthread_t ntid;
       pthread_create(&ntid,NULL,fun,(void*)&(newfd[inewfd-1]));
   }
}
// 注意 gcc server.c -o server -lpthread

//客户端程序 cli.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#define PORT 8082
#define BUFSIZE 512
char buf[BUFSIZE+1];
int main()
{
   //第 1 步 创建一个体套接字
   int sockfd=socket(AF_INET,SOCK_STREAM,0);
   //第 2 步 设置 addr 结构体
   struct sockaddr_in svraddr;
   svraddr.sin_family=AF_INET;//使用 internet 协议
   svraddr.sin_port=htons(PORT);
   inet_aton("127.0.0.1",&svraddr.sin_addr);
   //第 3 步 连接服务器
   connect(sockfd,(struct sockaddr*)&svraddr,sizeof(svraddr));
   while(1)
   {
   scanf("%s",buf);
   write(sockfd,buf,strlen(buf)); //第 4 步 向套接字中写入字符串
   }
}

本文出自 “好好活着” 博客,请务必保留此出处http://wolfword.blog.51cto.com/4892126/1224933

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/zs/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索服务器
, int
, 多线程
, printf
, include
, 套接字
inet_aton
tcp多线程客户端程序、tcp 服务器客户端程序、qt 多线程tcp客户端、客户端 服务器多线程、tcp客户端和服务器端,以便于您获取更多的相关知识。

时间: 2024-11-08 17:25:09

Tcp多线程服务器和客户端程序的相关文章

【Unix 网络编程】TCP 客户/服务器简单 Socket 程序

建立一个 TCP 连接时会发生下述情形: 1. 服务器必须准备好接受外来的连接.这通常通过调用 socket.bind 和 listen 这三个函数来完成,我们称之为被动打开. 2. 客户通过调用 connect 发起主动打开,这导致客户TCP发送一个SYN(同步)分节,标识希望连接的服务器端口以及初始序号.通常SYN分节不携带数据,其所在IP数据报只含有一个IP首部.一个TCP首部及可能有的TCP选项. 3. 服务器发送回一个包含服务器初始序号以及对客户端 SYN 段确认的 SYN + ACK

多线程-采用tcp实现聊天服务器和客户端

问题描述 采用tcp实现聊天服务器和客户端 采用tcp实现聊天服务器和客户端,客户端从命令行输入聊信息,服务器收到聊天信息发送给所有连接到此服务器的客户端. 要求: 此服务器端口号为:8888, 聊天信息格式为:消息头(4字节,标示后续消息体聊天信息的长度) + 消息体(聊天信息) 支持100个客户端的连接和发送接收操作. //多线程 客户端输入exit就断开连接并退出程序 服务器要能响应客户端的主动断开请求 解决方案 用socket可以实现,具体怎么用可以去百度,一堆dome 解决方案二: 请

用Java实现多线程服务器程序

---- 摘要:在Java出现之前,编写多线程程序是一件烦琐且伴随许多不安全因素的事情.利用Java,编写安全高效的多线程程序变得简单,而且利用多线程和Java的网络包我们可以方便的实现多线程服务器程序. ---- Java是伴随Internet的大潮产生的,对网络及多线程具有内在的支持,具有网络时代编程语言的一切特点.从Java的当前应用看,Java主要用于在Internet或局域网上的网络编程,而且将Java作为主流的网络编程语言的趋势愈来愈明显.实际工作中,我们除了使用商品化的服务器软件外

Java多线程实现聊天客户端和服务器_java

本文实例为大家分享了java聊天室代码,供大家参考,具体内容如下 主要涉及知识 ·Java中GUI程序的编写,包括事件监听机制. ·Java的网络通信编程,ServerSocket,Socket类的使用. ·Java中多线程的编程,Thread类,Runnable接口的使用. 源代码 客户端 package project1; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; impo

Udp的服务器程序和客户端程序

//服务器程序: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #define PORT 8082 #define BUFSIZE 512 char buf[BUFSIZE+

Eclipse客户端程序中多线程的使用

简介:本文分析了Eclipse中多线程程序的实现,讨论了在Eclipse客户端程序开发中应用多线程的方 法和要注意的问题,同时也讨论了多线程程序的一些调试和问题解决的方法. Eclipse作为一个开发平台,使用越来越广泛,基于Eclipse Rich Client Platform开发的客户端程序 也越来越多.在当今越来越复杂的应用环境中,我们的客户端程序不可避免的要同时进行多任务的处理. 一个优异的客户端程序都会允许用户同时启动多个任务,从而大大提高用户的工作效率以及用户体验.本 文中我们来谈

服务器文件下载到本地-在Weblogic服务器上生成文件怎么直接下载到本地,不通过SFTP,ftp等客户端程序?

问题描述 在Weblogic服务器上生成文件怎么直接下载到本地,不通过SFTP,ftp等客户端程序? 如题,我是把Weblogic服务器数据导入到Excel表格里然后下载下来,在tomcat下直接能下载下来,但是部署到weblogic上 下载的文件显示损坏,打不开. 有没有谁会解决这个问题,或者给个新的方法呢?

tcp/ip socket-TCP/IP客户端与服务器之间的通信问题。。急求解决方法!!!!!

问题描述 TCP/IP客户端与服务器之间的通信问题..急求解决方法!!!!! 在做一个项目,问题,客户端和服务器端可以都开两个线程.即客户端打开线程1和线程2,服务器端打开线程1和线程2.在通信过程中服务器线程1与客户端线程1通信,服务器线程2与客户端线程2通信,这样子怎么实现呢???急求 解决方案 你先搞懂socket怎么用,然后网上有很多socket的例子,有的很不错,自己研究一下 解决方案二: socket我已经了解过了,实现了多个客户端同时与服务器之间的通信,现在想做客户端开两个线程一个

服务器-客户端程序检测并记录用户执行了哪些操作,怎么实现呢?

问题描述 客户端程序检测并记录用户执行了哪些操作,怎么实现呢? 比如用户按下了Button1,Button2等等,那么全部记录下来形成操作日志. 怎样将记录下来的操作日志传给服务器,再由服务器存入数据库? 小弟大一初学者还请各位指点一下 谢谢! 解决方案 是自己的程序的话,重写PreTranslateMessage,记录下所有的事件.然后socket上传服务器 解决方案二: 按下button等事件都会调用submit,在服务器端调用对应action的函数时,在该函数的最前面加入insert语句,