资源简介
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单片机元件库
相关资源
- TCP IP通信labview程序
- Modbus协议官方文档中、英文全
- Omron ETN21模块进行modbustcp通讯
- 通信软件的具体实例──基于Socket的
- 编写简单的RMI程序 多线程web 服务器
- 用Socket编程实现FTP
- websocket实现一对一聊天
- 组态王中S7-300TCP驱动
- 基于Apache Mina实现的TCP长连接和短连接
- CVI下的TCP服务器和客户端
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- TCP 发包工具(windows)
- SOCKET 网络编程 计算机网络 作业 客户
- 多线程生产者消费者模式
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- VxWorks TCPIP协议栈
- socket小工具(可方便建立TCP UDP的soc
- socket客户端源码
- vc 编写的基于TCP协议的客户/服务器
- 多线程实例:桌面智能弹球小游戏
- 基于CSocket的多人聊天室
- 采用WINSOCK2 编写的TCP/UDP通信程序
- socket文件传输源码
- Modbus TCP Client
- WPF多线程演示
- 易语言:多线程传多变量的最稳定方
- 易语言 TCP使用HTTP、SOCKES5代理IP。
- 西门子S7-1200 MODBUS-TCP通讯编程
- 200SMART Modbus-TCP通信程序演示-轮询(多
评论
共有 条评论