- 论坛徽章:
- 0
|
在A机器上用telnet连接B邮件服务器操作,一切正常
但用下面这段C代码出现错误,gdb调试,走到send(sockfd, helo, strlen(helo), 0);时
报错
Program received signal SIGPIPE, Broken pipe.
0x00000036c340d1c5 in send () from /lib64/libpthread.so.0
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <error.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/types.h>
int main(void)
{
struct sockaddr_in servaddr;
int sockfd;
char *recvstr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
inet_pton(AF_INET, "172.18.246.100", &servaddr.sin_addr);
servaddr.sin_port = htons(25);
connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
char *helo = "HELO\r\n";
send(sockfd, helo, strlen(helo), 0);
recv(sockfd, recvstr, 100, 0);
printf("%s\n", recvstr);
return 0;
} |
|