帮我看看这段SOCKETS!!
我从网上找了一段SOCKET 的程序可是只有服务器端的没有客户端的 那位朋友帮我写一个
我主要的问题就是 : 1 填充SOCKET时ADDR PORT 是服务器的还是我的
2 CONNECTION 的用法
3 send 的用法
#include <winsock2.h>
#include <stdio.h>
#define SERVER_PORT 5000
void main()
{
char Server_name[128]={65};
WSADATA wsaData;
SOCKET socketServer;
struct hostent *hp;
struct sockaddr_in addrServer;
SOCKADDR addrtemp;int nlen = sizeof(addrtemp);
SOCKET sockettemp;
char buff[1024];int bufflen;
WSAStartup(0x202,&wsaData); //初始化Winsock资源
socketServer = socket(AF_INET,SOCK_STREAM,0); //建立套接字
//AF_INET:TCP/IP地址族
//SOCK_STREAM:数据流方式
gethostname(Server_name,128); //获取机器的名称
hp = gethostbyname(Server_name); //通过机器名称获取主机的信息
//初始化sockaddr_in结构
//包括IP地址sin_addr、协议族sinfamily和使用的端口sin_port
memset(&addrServer,0,sizeof(addrServer));
memcpy(&(addrServer.sin_addr),hp->h_addr,hp->h_length);
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons((unsigned short)SERVER_PORT);
if(SOCKET_ERROR == bind(socketServer,(LPSOCKADDR)&addrServer,sizeof(addrServer)))
{
printf("Bind Socket Error ! \r\n");
return;
}
else
{
printf("Bind Socket Success . . .\r\n");
printf("---------------------------------------------\r\n");
printf("This machine's name is -> %s\r\n",Server_name);
printf("This machine's IP address is -> %d.%d.%d.%d\r\n",
*(BYTE*)&(addrServer.sin_addr),
*((BYTE*)&(addrServer.sin_addr)+1),
*((BYTE*)&(addrServer.sin_addr)+2),
*((BYTE*)&(addrServer.sin_addr)+3));
printf(" Recieve Port is -> %d\r\n",SERVER_PORT);
}
listen(socketServer,5); //在socketServer上监听连接信息
printf("---------------------------------------------\r\n");
printf("Wait for a connection . . .\r\n");
ZeroMemory((void*)&addrtemp,sizeof(addrtemp));
nlen = sizeof(addrtemp);
sockettemp = accept(socketServer,&addrtemp,&nlen); //接受连接请求并生成专用的接收socket
bufflen = recv(sockettemp,buff,1023,0); //接受信息
memset(buff+bufflen,0,1);
printf("Message Recieved: [%s]\r\n",buff);
printf("Press any key to continue . . .");
scanf("%c");
closesocket(sockettemp);
closesocket(socketServer);
WSACleanup();
return;
}