?? client.c
字號(hào):
//File Name: Client.c
//客戶程序發(fā)送報(bào)文,然后接收主機(jī)交換IP地址和UDP端口號(hào)的報(bào)文
//命令行格式:client 主機(jī)名 端口號(hào)
#include "winsock.h"
#include "stdio.h"
#pragma comment(lib,"wsock32")
main( int argc, char *argv[] )
{
WSADATA WSAData;
int sock;
struct sockaddr_in cliaddr;
struct sockaddr_in srvaddr;
struct hostent *hp;
char send_message[100];
char recv_message[100];
//命令行參數(shù)不能少于4個(gè)(client 主機(jī)名 端口號(hào) 消息字符串)
if ( argc < 4 )
{
printf("usage: client server_host server_port msg_string\n");
exit(0);
}
//初始化Ws2_32.dll
WSAStartup(MAKEWORD(1,1),&WSAData);
//建立套接字
sock = socket( AF_INET, SOCK_STREAM, 0 );
if ( sock < 0 )
{
perror( "opening stream socket" );
exit( 1 );
}
//創(chuàng)建地址
cliaddr.sin_family = AF_INET;
cliaddr.sin_addr.s_addr = 0x7F000001;
srvaddr.sin_family = AF_INET;
//得到服務(wù)器名
hp = gethostbyname( argv[1] );
if ( hp == 0 ) {
fprintf( stderr, "%s: unknown host\n", argv[1] );
exit( 3 );
}
//連接服務(wù)器
memcpy( (char *)&srvaddr.sin_addr, (char *)hp->h_addr, hp->h_length );
srvaddr.sin_port = atoi(argv[2]);
if ( connect( sock, (struct sockaddr *)&srvaddr, sizeof(srvaddr) ) < 0 ) {
perror( "connecting stream socket" );
exit( 4 );
}
//發(fā)送消息到服務(wù)器
strcpy( send_message, argv[3] );
if (send(sock, send_message, 100, 0) < 0) perror("send");
//從服務(wù)器接收消息
if ( recv(sock, recv_message, 100, 0) < 0) perror("recv");
printf("receive: %s\n", recv_message);
//關(guān)閉套接字
closesocket( sock );
exit( 0 );
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -