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