当前位置:  技术问答>linux和unix

一个用socket的聊天程序,实在是弄不出来了!

    来源: 互联网  发布时间:2015-06-23

    本文导语:  server.c  client.c 就是想实现在client端当输入"s"时就可以发送消息,server端接受到返回到client! server.c端程序如下 #include   #include   #include   #include   #include   #include   #include   #include   #include  #include  #define SER...

server.c  client.c 就是想实现在client端当输入"s"时就可以发送消息,server端接受到返回到client!
server.c端程序如下
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include 
#include 
#define SERVPORT 3333
#define BACKLOG 10   
#define MAXDATASIZE 100

main() 

pid_t pid;
int real_len,real_send_len;
int sockfd,client_fd,numbytes;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
char buf[MAXDATASIZE];
int sin_size;
if((sockfd = socket(AF_INET, SOCK_STREAM, 0))==-1) 
{
printf("socket error!"); 
exit(1); 

my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr=INADDR_ANY; 
bzero(&(my_addr.sin_zero),8);
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
{
printf("bind error!");
exit(1);
}
if(listen(sockfd,BACKLOG)==-1)
{
printf("listen error!");
exit(1);
}
while(1)
{
sin_size = sizeof(struct sockaddr_in);
if((client_fd = accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size))==-1)
{
printf("accept error!");

}

printf("received a connection from %sn", inet_ntoa(remote_addr.sin_addr));
close(sockfd);
//if(!fork()){
//send to server
real_len = recv(client_fd,buf,MAXDATASIZE,0);
buf[real_len] = '';
printf("get from client::%s",buf);
real_send_len = send(client_fd,buf,real_len,0);
//need some process here
//}
}

close(client_fd);



client端程序如下
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define PORT 3333
#define DEST_IP "192.168.1.220"
#define MAXDATASIZE 100
int main(int argc,char *argv[])
{
int sockfd,numbytes,client_fd,read_len,real_send_len;
char buf[MAXDATASIZE];
//struct hostent *host;
struct sockaddr_in their_addr;
if(argc!=2)
{
fprintf(stderr,"usage: client hostnamen");
exit(1);
}

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) 
{
printf("socket error");
exit(1);
}
their_addr.sin_family=AF_INET;
their_addr.sin_port=htons(PORT);
//their_addr.sin_addr=inet_addr(DEST_IP);
their_addr.sin_addr.s_addr=inet_addr(DEST_IP);
bzero(&(their_addr.sin_zero),8);
if(connect(sockfd,(struct sockaddr *)&their_addr,sizeof(struct sockaddr))==-1)
{
printf("connect error");
exit(1);
}
while(1)
{
//send to server
read_len = recv(client_fd,buf,MAXDATASIZE,0);
buf[read_len] = '';
printf("get to server::%s",buf);
if(getchar()=='s')
{
scanf("%s",buf);
printf("send to client::%s",buf);
real_send_len = send(client_fd,buf,read_len,0);
//need some process here
}

}
close(sockfd);
return 0;


为了实现上面的要求!请大家帮我改改 谢谢!

|
http://expert.csdn.net/Expert/topic/2879/2879992.xml?temp=.5156061
看看这个先,比拟哪个要复杂!那个是我写过的!

|
主体流程好像没有什么问题,你还是慢慢调试一下看看吧。

|
用gdb调一下,看看程序走到哪一步?

    
 
 

您可能感兴趣的文章:

  • 为什么从socket一端读进去的字符,从另一端读出来是null----在线
  • 求助 关于Linux下Socket的聊天程序
  • 谁有socket编程的聊天室代码? TO:skyyoung(路人甲),你有吗?
  • 帮帮忙!!!我用udp sockets 写了聊天室,有问题。
  • 谁能告诉我,做一个象网易那样的聊天室,用什么方法,不要告诉我是用数据库或读写文件,是不是用多线程,socket协议。来讨论者皆有分。
  • php socket实例之telnet实现的聊天程序
  • 一个简单的linux课程设计--《基于socket聊天室的设计与实现》 帮忙分析下~
  • 求一个用SOCKET编写的聊天程序,给300分,不够还可以加!!很急!!!!
  • 怎么实现server和client双向聊天的SOCKET,我哪错了
  • linux 平台下socket聊天程序,无法运行。高手指点:
  • php socket实现的聊天室代码分享
  • SOCKET聊天室程序求助(有源程序)100分
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 我的ping程序怎么老是出现Socket operation on non-socket
  • linux客户端程序能否和windows端的服务器程序进行socket通信?
  • socket客户端程序的问题
  • 请教: linux下用c++写最简单的socket程序如何写?
  • 把socket客户端程序和服务端程序放在同一机器上运行,可以吗?
  • 如何清楚linux系统中以退出程序的socket连接?
  • 求助:我的第一个 socket 程序,缺少某些结构的定义
  • gdb 怎么调试socket程序
  • socket程序中,查看error需要什么头文件?
  • 我断开socket服务器日志之后,服务器程序就挂死啦
  • 基于socket的linux和Windows通信程序为什么运行特别慢?
  • 我用单机编译socket和ServerSocket程序,我应该怎样对自己的机器进行设置?
  • 请问如何在linux下用gcc调试socket程序???
  • linux下socket模拟telnet功能的程序,急求
  • 如何在redhat e4下用gcc编译socket程序,(-lsocket无法使用啊)!急,在线等
  • 多线程socket程序莫名其妙接收到SIGALRM信号问题。
  • linux socket程序,出现closed by peer问题
  • 写socket程序的时候,都需要注意哪些信号?
  • 大家一起讨论一下这个程序设计(关于socket实现http协议)。
  • 要编写一个后台的socket通讯程序,各位有没有什么好的建议?
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3