23,110
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h> /* for printf() and fprintf() */
#include <sys/socket.h> /* for socket() and bind() */
#include <arpa/inet.h> /* for sockaddr_in and inet_ntoa() */
#include <stdlib.h> /* for atoi() */
#include <string.h> /* for memset() */
#include <unistd.h> /* for close() */
#include <fcntl.h>
#define TCPCLIENTPORT 10000
#define BUFFERSIZE 256
int main()
{
struct sockaddr_in s_addr;
struct sockaddr_in c_addr;
int sock,tcpsock;
socklen_t addr_len;
int len,tcplen;
char buff[BUFFERSIZE],tcprecvbuff[BUFFERSIZE];
struct sockaddr_in tcp_seraddr;
char *SerIP = "192.168.1.115";
if ((tcpsock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
perror("socket() failed");
exit(0);
}
/* Construct the server address structure */
fcntl(tcpsock,F_SETFL,O_NONBLOCK); //错误出在这里
memset(&tcp_seraddr, 0, sizeof(tcp_seraddr)); /* Zero out structure */
tcp_seraddr.sin_family = AF_INET; /* Internet address family */
tcp_seraddr.sin_port = htons(TCPCLIENTPORT); /* Server port */
tcp_seraddr.sin_addr.s_addr = inet_addr(SerIP); /* Server IP address */
/* Establish the connection to the echo server */
if (connect(tcpsock, (struct sockaddr *) &tcp_seraddr, sizeof(tcp_seraddr)) < 0)
{
perror("connect() failed");
exit(0);
}
return 0;
}
#include "unp.h"
int
connect_nonb(int sockfd, const SA *saptr, socklen_t salen, int nsec)
{
int flags, n, error;
socklen_t len;
fd_set rset, wset;
struct timeval tval;
flags = Fcntl(sockfd, F_GETFL, 0);
Fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
error = 0;
if ( (n = connect(sockfd, saptr, salen)) < 0)
if (errno != EINPROGRESS)
return (-1);
/* Do whatever we want while the connect is taking place. */
if (n == 0)
goto done; /* connect completed immediately */
FD_ZERO(&rset);
FD_SET(sockfd, &rset);
wset = rset;
tval.tv_sec = nsec;
tval.tv_usec = 0;
if ( (n = Select(sockfd + 1, &rset, &wset, NULL,
nsec ? &tval : NULL)) == 0) {
close(sockfd); /* timeout */
errno = ETIMEDOUT;
return (-1);
}
if (FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset)) {
len = sizeof(error);
if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0)
return (-1); /* Solaris pending error */
} else
err_quit("select error: sockfd not set");
done:
Fcntl(sockfd, F_SETFL, flags); /* restore file status flags */
if (error) {
close(sockfd); /* just in case */
errno = error;
return (-1);
}
return (0);
}
#include <stdio.h> /* for printf() and fprintf() */
#include <sys/socket.h> /* for socket() and bind() */
#include <arpa/inet.h> /* for sockaddr_in and inet_ntoa() */
#include <stdlib.h> /* for atoi() */
#include <string.h> /* for memset() */
#include <unistd.h> /* for close() */
#include <fcntl.h>
#define TCPCLIENTPORT 10000
#define BUFFERSIZE 256
int main()
{
struct sockaddr_in s_addr;
struct sockaddr_in c_addr;
int sock,tcpsock;
socklen_t addr_len;
int len,tcplen;
char buff[BUFFERSIZE],tcprecvbuff[BUFFERSIZE];
struct sockaddr_in tcp_seraddr;
char *SerIP = "192.168.1.115";
if ((tcpsock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
perror("socket() failed");
exit(0);
}
/* Construct the server address structure */
fcntl(tcpsock,F_SETFL,O_NONBLOCK);
memset(&tcp_seraddr, 0, sizeof(tcp_seraddr)); /* Zero out structure */
tcp_seraddr.sin_family = AF_INET; /* Internet address family */
tcp_seraddr.sin_port = htons(TCPCLIENTPORT); /* Server port */
tcp_seraddr.sin_addr.s_addr = inet_addr(SerIP); /* Server IP address */
/* Establish the connection to the echo server */
if (connect(tcpsock, (struct sockaddr *) &tcp_seraddr, sizeof(tcp_seraddr)) < 0)
{
perror("connect() failed");
exit(0);
}
close(tcpsock);
return 0;
}