套接字的使用有关问题

套接字的使用问题
初学套接字。。我是在同一台电脑上做的服务器与客户端通信的实验。。但是运行结果有些让我不理解请各位老师帮忙解答,谢谢。。
一下是代码部分。
服务器端:

#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<ctype.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define MAX_LINE 100

int main()
{
struct sockaddr_in sin; //定义地址结构
struct sockaddr_in cin;
struct sockaddr_in bin;

int l_fd; //定义套接字描述符
int c_fd;
int n; //接收read函数的返回值
socklen_t len; //定义地址长度,socklen_t应该是一个地址宏,不需要struct定义
char buf[MAX_LINE];
char addr_p[16]; //定义客户端的地址缓冲区
char bufback[MAX_LINE]; //服务器返回数据
int port = 50361; //定义端口号
//=====================================================================================
// 定义地址族、IP地址和端口号
//=====================================================================================

bzero(&cin,sizeof(cin));
bzero(&bin,sizeof(bin));

bzero(&sin,sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(port);

char addrlook[16];
inet_ntop(AF_INET,&sin.sin_addr,addrlook,sizeof(addrlook));
printf("服务器地址和端口号为:%s与%d\n",addrlook,ntohs(sin.sin_port));
//=====================================================================================
// 配置套接字选择地址族和通讯协议
//=====================================================================================

char * bufc="服务器没有收到客户端的信息<----------";
strcpy(buf,bufc);

l_fd = socket(AF_INET,SOCK_STREAM,0); //创建套接字

if(bind(l_fd,(struct sockaddr *)&sin,sizeof(sin)) != 0) //绑定地址
{
printf("地址绑定失败!!\n");
}

printf("准备监听。。。。。。。。\n");
listen(l_fd,10); //服务器开始监听
printf("服务器开始监听。。。。。。。。\n");

while (1)
{
printf("-------进入大循环-----\n");

if(c_fd = accept(l_fd,(struct sockaddr *)&cin,&len) == -1)  
{
printf("服务器端处理链接失败!!\n");
exit(errno);
}
printf("接收到客户端链接请求!\n");

n = read(c_fd,buf,MAX_LINE); //文件形式读取客户端信息
printf("n为%d\n",n);
if(n == (-1))
{
printf("read接收读取异常!!\n");
}
int fla=9;
if(fla=inet_ntop(AF_INET,&cin.sin_addr,addr_p,sizeof(addr_p)) != 1) //得到客户端地址
{
if(fla==0)
{printf("二进制地址格式错误!!\n");}
else if(fla==(-1))
{printf("其他原因造成ntop函数错误!!\n");}
}

printf("客户端地址为:%s,端口号为:%d\n",addr_p,ntohs(cin.sin_port));

printf("接收到客户端数据为:%s\n",buf);

  char * bufb = "=======>服务器已接收到您的信息!!\n";

strcpy(bufback,bufb);

write(c_fd,bufback,sizeof(bufback)); //将讯息返回给客户端

close(c_fd);
}
close(l_fd);
return 0;

}


客户端代码:

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<string.h>

#define MAX_LINE 100

int main()
{
struct sockaddr_in sin; //声明用于记录服务器端地址
char bufback[MAX_LINE]="------>未收到服务器信息!!";

int sfd;
int port=50361;
char str[100];
  char addr_look[16];

printf("请输入要向服务器端传送的数据:\n");
scanf("%s",str);

bzero(&sin,sizeof(sin));
sin.sin_family = AF_INET;
inet_pton(AF_INET,"127.0.0.1",&sin.sin_addr);
sin.sin_port = htons(port);