用C语言在WIN32下编译一个简单的聊天程序,客户端向服务器发消息,服务器接到消息后会返回一个 50

小写的ok给客户端,并在客户端显示出来。以下是我的编程,缺少接收服务器发给客户端的ok,跪求补充完整。//Client#include<stdio.h>#include<... 小写的ok给客户端,并在客户端显示出来。以下是我的编程,缺少接收服务器发给客户端的ok,跪求补充完整。
//Client
#include<stdio.h>
#include<windows.h>
#include<winsock2.h>
int main() {
WSADATA ws;
SOCKET sockfd;
int ret;
struct sockaddr_in seraddr;
char buf[128];
ret = WSAStartup(MAKEWORD(2,2), &ws);
if (ret != 0) {
printf("Init Windows Socket Failed!\n");
return -1;
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == INVALID_SOCKET) {
printf("套接字创建失败!\n");
return -1;
}
seraddr.sin_family = AF_INET;
seraddr.sin_port = htons(9400);
seraddr.sin_addr.s_addr = inet_addr("192.168.1.187");
ret = connect(sockfd, (struct sockaddr*) &seraddr, sizeof(seraddr));
if (ret == -1) {
printf("套接字连接失败!\n");
closesocket(sockfd);
return 1;
}
while (1) {
memset(buf, 0, sizeof(buf));
scanf("%s", buf);
ret = send(sockfd, buf, strlen(buf), 0);
if (ret == -1) {
printf("套接字发送失败!\n");
closesocket(sockfd);
WSACleanup();
}
}
return 0;
}
展开
 我来答
_梦幻阳光
2013-04-22 · TA获得超过978个赞
知道答主
回答量:219
采纳率:0%
帮助的人:173万
展开全部
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<errno.h>
#include<netinet/in.h>
#include<sys/socket.h>

#define SERVERPORT 5555#define BACKLOG 10
#define MAXLEN 1024

int main(){
int sockfd,client_fd;
int sin_size = 0;
int recvlen = 0;
char recvbuf[MAXLEN]={0};
struct sockaddr_in my_addr;
struct sockaddr_in cli_addr;
int iRet;

/*建立socke通信*/
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){
printf("Create socket error\n\n");
exit(1);
}

printf("socket success\n");

my_addr.sin_family=AF_INET; my_addr.sin_port=htons(SERVERPORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
memset(my_addr.sin_zero,0,8);

/*绑定socket端口*/
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr)) == -1){
printf("bind error\n");
close(sockfd);
exit(1);
}

printf("bind success\n");

/*监听端口*/
if(listen(sockfd,BACKLOG) == -1){
printf("listen error\n!");
close(sockfd);
exit(1);
}

printf("listren success\n");

while(1) {

sin_size = sizeof(struct sockaddr_in);

/*阻塞等待客户端发送消息*/
if((client_fd=accept(sockfd,(struct sockaddr *)&cli_addr,&sin_size)) == -1)
{
printf("accept error !");
continue;
}
printf("accept success\n");
printf("receive a connection form %s\n",inet_ntoa(cli_addr.sin_addr));

/*fork进程,子进程处理接收的信息*/
iRet=fork();
if(iRet < 0)
{
printf(" fork err, pid=[%d]", getpid());
}

/*fork返回0,为子进程*/
else if(iRet == 0)
{

printf("pid=[%d]", getpid());
printf("子进程\n");

memset(recvbuf,0,sizeof(recvbuf));

/*接收客户端发送的内容*/
if((recvlen = recv(client_fd,recvbuf,MAXLEN,0)) == -1)
{
printf("recv error\n");
close(client_fd);
exit(1);
}
printf("recvlen[%d]\n",recvlen);
printf("recvmsg:\n%s\n",recvbuf);

/*向客户端发送内容*/ if(send(client_fd,recvbuf,recvlen,0) == -1)
{
printf("send error\n");
close(client_fd);
exit(1);
}
printf("sendmsg:\n%s\n",recvbuf);

close(client_fd);
exit(0);

}

/*父进程,返回子进程pid*/
else
{
printf("pid=[%d]", getpid());
printf("父进程\n");
continue;
}

}

close(sockfd);
exit(0);
}
追问
大侠,我的意思是让你帮我把我的程序补充好。不是让你给我给新的。像你那种的网上多的是。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰是沉默的水3
2013-04-22 · TA获得超过908个赞
知道小有建树答主
回答量:473
采纳率:50%
帮助的人:137万
展开全部
好厉害的样子,完成了可以给我代码么!我也想看看!
追问
没问题。
追答

时隔一年,我也写了很多关于socket的程序。。。。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
low_kpower
2013-04-23 · 超过16用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:37.5万
展开全部
可以给我一份吗?谢谢,389129421@qq.com
追问
还没有完成,先帮忙想。好了就给你。。。
追答
嗯,先在这儿谢谢啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式