資源簡介
網絡編程實驗一,客戶端和服務器代碼
代碼片段和文件信息
/************************************************************************************************************************************
*程序:client.c
*目的:創建一個套接字,通過網絡連接一個服務器,并打印來自服務器的信息
*語法:client?[?host?[port]?]
*??????host?-?運行服務器的計算機的名字
*??????port?-?服務器監聽套接字所用協議端口號
*注意:兩個參數都是可選的。如果未指定主機名,客戶機使用localhost;如果未指定端口號,客戶機將使用PROTOPORT中給定的默認協議端口號
************************************************************************************************************************************/
#include?????????????????/*windows下,unix里關于套接字的頭文件都包括在winsock2.h*/
#include?
#include?
#pragma?comment(lib“ws2_32.lib“)??????/*連入一個庫文件*/
#define?PROTOPORT?5188?????????????????/*默認協議端口號*/
char?*localhost?=?“localhost“;?????????/*默認主機名*/
int?main(int?argcchar?*argv[])
{
struct?hostent?*ptrh;?????????????????/*指向主機列表中一個條目的指針*/
struct?sockaddr_in?servaddr;??????????/*存放服務器端網絡地址的結構*/
SOCKET?sockfd;????????????????????????/*客戶機端的套接字描述符*/
int?port;?????????????????????????????/*服務器端套接字協議端口號*/
char?*host;???????????????????????????/*服務器主機名指針*/
int?datalen;??????????????????????????/*發送、接收的數據長度*/
int?addrlen;??????????????????????????/*地址長度*/
char?buf[1000];???????????????????????/*緩沖區,接收服務器發來的數據*/
????WSADATA?wsaData;
if(WSAStartup(MAKEWORD(22)&wsaData)?!=?0)
{
printf(“Failed?to?load?winsock.\n“);
return?-1;
}
memset((char?*)&servaddr0sizeof(servaddr));???/*清空sockaddr結構*/
servaddr.sin_family?=?AF_INET;??????????????????/*設置為Internet協議簇*/
/*檢查命令行參數,如果有,就抽取端口號;否則使用內定的默認值*/
if(argc?>?2)
port?=?atoi(argv[2]);???????????????????????/*如果指定了協議端口,就轉換成整數*/
else
port?=?PROTOPORT;???????????????
評論
共有 條評論