18,356
社区成员
发帖
与我相关
我的任务
分享
char buf[255];
memset(buf,0,255);
WSADATA wsaData;
SOCKET s;
SOCKADDR_IN ServerAddr;
int Port = 20000; //初始化Windows Socket 2.2
if(WSAStartup(MAKEWORD(2,2), &wsaData)!=0)
{
AfxMessageBox("套接字第一部就不对");
return -1;
}
// 创建一个新的Socket来连接服务器
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
// 填写客户端地址信息 // 端口为2000
// 服务器IP地址为"192.168.1.16",注意使用inet_addr将IP地址转换为网络格式
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(Port);
ServerAddr.sin_addr.s_addr = inet_addr("192.168.1.16");
memset(ServerAddr.sin_zero,0x00,8);
// 向服务器发出连接请求
int n = connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr));
if (n == SOCKET_ERROR)
{
AfxMessageBox("建立不了连接");
}
// 新的连接建立后,就可以互相通信了,在这个简单的例子中,我们直接关闭连接,
int nlength = recv(s,buf,255,0);
CString strMessage(buf);
AfxMessageBox(strMessage);
// 并关闭监听Socket,然后退出应用程序
closesocket(s); // 释放Windows Socket DLL的相关资源
WSACleanup();
#include < stdio.h >
#include < sys / socket.h >
#include < unistd.h >
#include < sys / types.h >
#include < netinet / in .h >
#include < stdlib.h >
#include < time.h >
#define SERVER_PORT 20000 // define the defualt connect port id
#define LENGTH_OF_LISTEN_QUEUE 10 // length of listen queue in server
#define BUFFER_SIZE 255
#define WELCOME_MESSAGE "welcome to connect the server. "
int main( int argc, char ** argv)
{
int servfd,clifd;
struct sockaddr_in servaddr,cliaddr;
if ((servfd = socket(AF_INET,SOCK_STREAM, 0 )) < 0 )
{
printf( " create socket error!/n " );
exit( 1 );
}
bzero( & servaddr, sizeof (servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERVER_PORT);
servaddr.sin_addr.s_addr = htons(INADDR_ANY);
if (bind(servfd,( struct sockaddr * ) & servaddr, sizeof (servaddr)) < 0 )
{
printf( " bind to port %d failure!/n " ,SERVER_PORT);
exit( 1 );
}
if (listen(servfd,LENGTH_OF_LISTEN_QUEUE) < 0 )
{
printf( " call listen failure!/n " );
exit( 1 );
}
while ( 1 )
{ // server loop will nerver exit unless any body kill the process
char buf[BUFFER_SIZE];
long timestamp;
socklen_t length = sizeof (cliaddr);
clifd = accept(servfd,( struct sockaddr * ) & cliaddr, & length);
if (clifd < 0 )
{
printf( " error comes when call accept!/n " );
break ;
}
strcpy(buf,WELCOME_MESSAGE);
// inet_ntop(INET_ADDRSTRLEN,cliaddr.sin_addr,buf,BUFFER_SIZE);
printf( " from client,IP:%s,Port:%d/n " ,inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
timestamp = time(NULL);
strcat(buf, " timestamp in server: " );
strcat(buf,ctime( & timestamp));
send(clifd,buf,BUFFER_SIZE, 0 );
close(clifd);
} // exit
close(servfd);
return 0 ;
}