消息未发送:C套接字

消息未发送:C套接字,c,C,执行后,我在客户机中键入文件名,但它不会在服务器端打印出来。我什么都试过了。请帮忙。我正在windows中使用bash。我只是将一个文件名从客户端发送到服务器。服务器端将显示客户端 这是我的客户 #include<stdio.h> #include<sys/socket.h> #include<sys/types.h> #include<string.h> #include<netinet/in.h> #include<stdli

执行后,我在客户机中键入文件名,但它不会在服务器端打印出来。我什么都试过了。请帮忙。我正在windows中使用bash。我只是将一个文件名从客户端发送到服务器。服务器端将显示客户端

这是我的客户

#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<string.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<unistd.h>
  int main()
  {
    int i,size,connect_status,sd;
    char sentmsg[100],recvmsg[100];
    int sentlen,sent_status,recvlen,recvbytes;
    struct sockaddr_in client,address;
    sd = socket(AF_INET,SOCK_STREAM,0);
    if(sd == -1)
    {
            perror("Socket Error : ");
            return 0;
    }

    client.sin_family = AF_INET;
    client.sin_port = htons(1543);
    client.sin_addr.s_addr = INADDR_ANY;
    for(i=0; i<8;i++)
    {
            client.sin_zero[i] = '\0';
    }
    connect_status = connect(sd,(struct sockaddr*)&client,sizeof(struct sockaddr));
    if(connect_status == -1)
    {
            perror("Connect Error : ");
            return 0;
    }
    printf("\nEnter the file name to be read : ");
    scanf("%s",sentmsg);
    sent_status = send(sd,sentmsg,100,0);
    if(sent_status == -1)
    {
            perror("Sending Error : ");
            return 0;
    }

    return 0;
  }
#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main()
{
int i,大小,连接状态,sd;
char sentmsg[100],recvmsg[100];
int sentlen,sent_status,recvlen,recvbytes;
客户端中的结构sockaddr_,地址;
sd=套接字(AF_INET,SOCK_STREAM,0);
如果(sd==-1)
{
perror(“套接字错误:”);
返回0;
}
client.sinu family=AF\u INET;
client.sin_port=htons(1543);
client.sin_addr.s_addr=INADDR\u ANY;

对于(i=0;i这是因为您没有初始化
recvlen
。 将其设置为接收缓冲区长度,它将工作:

recvlen = 100;
rec_status = recv(newsd,recvmsg,recvlen,0);

拒绝连接表示服务器主动拒绝连接请求。端口可访问,但没有服务器进程绑定。那么我需要做什么?我不知道C语言中的任何网络通信,但这是一个常见错误。您已在client
client.sin_port=htons(1543)中定义;
但在服务器中,
server.sin\u port=htons(1534)
您觉得这正确吗?还是应该是同一个端口?非常感谢!连接现在已经建立。但是我在客户端使用的文件名现在没有出现在服务器端。请帮助很高兴听到连接成功。很抱歉,无法帮到您,这是一个完全不同的问题;正如我所说,我知道n关于C语言中的网络,我只是根据我对网络的了解指出了一些我觉得可疑的东西。
recvlen = 100;
rec_status = recv(newsd,recvmsg,recvlen,0);