Cygwin下结果:
connect() 127
Transport endpoint is already connected
VC8下结果:
connect() 10022
No error
Linux 2.6.27下结果:
connect() 106
Transport endpoint is already connected
connect() 127
Transport endpoint is already connected
VC8下结果:
connect() 10022
No error
Linux 2.6.27下结果:
connect() 106
Transport endpoint is already connected
/*
作者:张亚霏
2008-12-09早
*/
#if defined WIN32 || defined _WIN32
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
int init_net()
{
WSADATA wsa_data;
return 0 != WSAStartup(MAKEWORD(2,2), &wsa_data);
}
void uninit_net()
{
WSACleanup();
}
int close_socket(SOCKET s)
{
return closesocket(s);
}
int get_last_error()
{
return WSAGetLastError();
}
#else
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
#include <errno.h>
int init_net()
{
return 1;
}
void uninit_net()
{
}
typedef int SOCKET;
int close_socket(SOCKET s)
{
return close(s);
}
int get_last_error()
{
return errno;
}
#endif
#define BUFFER_SIZE 1024
#define DEST_ADDRESS "127.0.0.1"
#define DEST_PORT 27015//1037
int main()
{
int recv_buf_size = 1024;
SOCKET send_socket;
struct sockaddr_in recv_addr;
char send_buf[BUFFER_SIZE];
char recv_buf[BUFFER_SIZE];
int ret;
fd_set read_set;
struct timeval time_out;
init_net();
send_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
recv_addr.sin_family = AF_INET;
recv_addr.sin_port = htons(DEST_PORT);
recv_addr.sin_addr.s_addr = inet_addr(DEST_ADDRESS);
ret = bind(send_socket, (struct sockaddr*) &recv_addr, sizeof(recv_addr));
if(ret == -1)
{
printf("bind() %d\n", get_last_error());
perror(NULL);
}
ret = listen(send_socket, 5);
if(ret == -1)
{
printf("listen() %d\n", get_last_error());
perror(NULL);
}
recv_addr.sin_family = AF_INET;
recv_addr.sin_port = htons(DEST_PORT);
recv_addr.sin_addr.s_addr = inet_addr(DEST_ADDRESS);
ret = connect(send_socket, (struct sockaddr*) &recv_addr, sizeof(recv_addr));
if(ret == -1)
{
printf("connect() %d\n", get_last_error());
perror(NULL);
}
close_socket(send_socket);
uninit_net();
return 0;
}