C 服务器客户端未连接

C 服务器客户端未连接,c,sockets,C,Sockets,我不熟悉C语言的socket编程。我被困在这里了。下面是服务器和客户端.c程序文件。问题是他们没有联系。任何帮助都将不胜感激 这是客户机 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <string.h> #include <std

我不熟悉C语言的socket编程。我被困在这里了。下面是服务器和客户端.c程序文件。问题是他们没有联系。任何帮助都将不胜感激

这是客户机

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <arpa/inet.h>

int main(void)
{
int host_socket =0,add_length,bufflen;
struct sockaddr_in host_addr;
struct hostent *h;
char recvbuffer[1024];

host_socket = socket(AF_INET,SOCK_DGRAM,0);
host_addr.sin_family = AF_INET;
host_addr.sin_port = 5000;
host_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

if(bind(host_socket,(struct sockaddr*)&host_addr,sizeof(host_addr))<0)
{
    printf("\n Could not connecct to Server !!");
    return 1;
}

recvfrom(host_socket,recvbuffer,(sizeof(recvbuffer)-1),0,(struct     sockaddr*)&host_addr,&add_length);
fputs(recvbuffer,stdout);
return 0;
    }
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
内部主(空)
{
int host_socket=0,添加长度,bufflen;
主机地址中的结构sockaddr\u;
结构宿主*h;
char recvbuffer[1024];
主机插槽=插槽(AF INET,SOCK DGRAM,0);
host_addr.sin_family=AF_INET;
主机地址sin端口=5000;
host_addr.sin_addr.s_addr=inet_addr(“127.0.0.1”);

如果(bind(host_socket,(struct sockaddr*)和host_addr,sizeof(host_addr))在服务器中接受并绑定,在客户端连接,主要问题是您使用的是UDP套接字,设计上是无连接的。第二个问题是您几乎没有检查错误。第三个问题是您的“客户端”程序看起来像UDP“服务器”程序,但仅用于一个数据报。
sendto(serv_socket,sendbuffer,strlen(sendbuffer),0,(struct sockaddr*)&serv_addr,sizeof(serv_addr))
您正在发送到
服务器套接字
接受
的返回值是新的套接字,在客户端连接后,您应该使用此套接字值将数据发送到。@codepad:我对您的代码有点困惑。就像您的
客户端
代码似乎与服务器相似。UDP连接较少,因此只有
绑定
是正确的在
server
代码中已经有足够的内容了。在这里查找简单的代码,也可以看到一些简单的示例。
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>


int main(void)
{
int serv_socket =0;
char sendbuffer[1024];
struct sockaddr_in serv_addr;

serv_socket = socket(AF_INET,SOCK_DGRAM,0);
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = 5000;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

bind(serv_socket,(struct sockaddr*)&serv_addr,sizeof(serv_addr));

listen(serv_socket,10);

while(1)
{

accept(serv_socket,(struct sockaddr*)NULL,NULL);
strcpy(sendbuffer,"your ip is not traced try again !!");

sendto(serv_socket,sendbuffer,strlen(sendbuffer),0,(struct sockaddr*)&serv_addr,sizeof(serv_addr));

close(serv_socket);
sleep(1);
}
return 0;
    }