资源简介
linux c tcp socket 多线程 简单聊天室 ,服务器端负责转发,代码很简陋有待改进
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#define BUFF_SIZE 1024
/*
* ./tcpclienttest [hostname] [port]//三个参数程序名算一个参数[]表示可以输也可不输
*/
int main(int argcchar *argv[])
{
int sockfd;
int rtncount=0;
struct sockaddr_in servip;
char *hostip;
unsigned short port;
char buff[BUFF_SIZE];
char name[20];
char message[BUFF_SIZE];
int recvlen=0sendlen;
int msglen=0;//message长度
struct hostent *host;
fd_set rdfd;
int maxfd;
struct timeval tv;
if(argc<2)
{
hostip=“localhost“;//服务器地址,不输如服务器ip的话默认本机
port=8080;
}
else if(argc==2)
{
port=8080;
}
else
{
hostip=argv[1];
port=atoi(argv[2]);//atoi()字符串转int
}
printf(“will connect %s:%d\n“hostipport);
if((host=gethostbyname(hostip))==NULL)
{
perror(“gethostbyname“);
exit(1);
}
sockfd=socket(AF_INETSOCK_STREAM0);
if(sockfd==-1)
{
perror(“socket\n“);
exit(1);
}
bzero(&servipsizeof(struct sockaddr_in));
servip.sin_family=AF_INET;
servip.sin_port=htons(port);
servip.sin_addr=*((struct in_addr *)host->h_addr);
//#define h_addr h_addr_list[0]char**h_addr_list#include
rtn=connect(sockfd(struct sockaddr *)&servipsizeof(servip));
if(rtn==-1)
{
printf(“connect to %s:%d fail.\n“(char *)inet_ntoa(servip.sin_addr)
ntohs(servip.sin_port));
perror(“connect\n“);
close(sockfd);
exit(1);
}
printf(“connect to %s:%d success.\n“(char *)inet_ntoa(servip.sin_addr)
ntohs(servip.sin_port));
strcpy(name“client-1“);
sendlen=send(sockfdname200);
if(sendlen==-1)
{
perror(“send name\n“);
close(sockfd);
exit(1);
}
while(1)
{
bzero(buffBUFF_SIZE); //清空发送缓冲区
bzero(messageBUFF_SIZE);//清空接收缓冲区
//gets(buff);
FD_ZERO(&rdfd);
FD_SET(0&rdfd);
FD_SET(sockfd&rdfd);
if(sockfd>maxfd)
{
maxfd=sockfd;
}
tv.tv_sec=0;
tv.tv_usec=0;
rtn=select(maxfd+1&rdfdNULLNULLNULL);
//printf(“select return: %d\n“rtn);
if(FD_ISSET(0&rdfd))
{
recvlen=read(0buffBUFF_SIZE);//从键盘输入字符 存到 buff
if(recvlen>0)
{
sendlen=send(sockfdbuffBUFF_SIZE0);
if(sendlen==-1)
{
perror(“send message\n“);
break;
}
}
}
recvlen=recv(sockfdmessageBUFF_SIZE0);
if(recvlen==-1)
{
perror(“recv message\n“);
break;
}
printf(“%s\n“message);
}
close(sockfd);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
....... 2520 2012-01-02 00:39 简单聊天室\clientroom.c
....... 3683 2012-01-02 00:41 简单聊天室\serverroom.c
I..D... 0 2012-01-02 00:44 简单聊天室
----------- --------- ---------- ----- ----
6203 3
- 上一篇:unity游戏开发教程.txt
- 下一篇:proteldxp STC单片机元件库
相关资源
- websocket插件
- windows下多线程编程完成矩阵乘法
- tcp、ip课程设计
- Tcpdump抓包工具免安装版v4.5.1
- 最好用的TCP+UDP+UART调试工具
- 简单实现多线程同步模拟购票系统
- TCPIP协议族 第四版答案1~16章
- TCP_UDP_PerformanceTest.exe
- 基于socket的文件传输软件的设计与实
- 基于mongoose实现Http Server多线程
- 多线程安全链表操作的C程序
- boost asio 服务器和客户端 TCP
- Socket实战
- Socket 类封装 改进版
- MODBUS-CSharp tcp测试正常
- Qt实现TCP文件传输
- webSocket 搭建
- IOCPExample_By_PiggyXP 完成端口
- 使用TCPServer编写多线程socket服务
- QT窗口界面模拟生产者消费者
- Qt 多线程使用 QTcpSocket及QTimer
- TCP/UDP/ICMP/IGMP发包工具
- MSTCPIP.H
- C_#_TCP发送消息和传输文件
- Socket双向通信基础代码
- 侦测ip端口小工具tcping linux版
- 电子科大TCPIP教程课件
- 套接字Socket通信TCP聊天程序含界面
- 多线程头文件omp.h
- TCP报文发送接收测试工具
评论
共有 条评论