📄 u_client.c
字号:
// U_client.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#define DATA_BUFFER 1024 //默认缓冲区大小
int main(int argc, char * argv[])
{
WSADATA wsaData;
SOCKET sClient;
int iPort = 5050;
int iLen;
int iRecv;//从服务器端接收的数据长度
char msg[]="Hello, my name is Tom.";
char buf[100];
struct sockaddr_in ser,cli;//服务器端地址
//判断参数输入是否正确:client [Server IP]
if(argc<2)
{
//提示在命令行中输入服务器IP地址
printf("Usage: client [server IP address]\n");
return -1;
}
//
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("Failed to load Winsock.\n");
return -1;
}
//填写要连接的服务器地址信息
ser.sin_family = AF_INET;
cli.sin_family = AF_INET;
ser.sin_port = htons(iPort);
//inet_addr()将命令行中输入的点分IP地址转换为二进制表示的网络字节序IP地址
ser.sin_addr.s_addr = inet_addr(argv[1]);
cli.sin_addr.s_addr = htonl(INADDR_ANY);
//建立客户端流式套接口
sClient = socket(AF_INET,SOCK_DGRAM,0);
if(sClient == INVALID_SOCKET)
{
printf("socket() Failed: %d\n",WSAGetLastError());
return -1;
}
if(bind(sClient,(LPSOCKADDR)&cli,sizeof(cli)) == SOCKET_ERROR)
{
printf("bind() Failed: %d\n",WSAGetLastError());
return -1;
}
iRecv = sendto(sClient,msg,sizeof(msg),0,(LPSOCKADDR)&ser,sizeof(ser));
if(iRecv == SOCKET_ERROR)
{
printf("sendto() Failed: %d\n",WSAGetLastError());
}
else
{
printf("sendto() byte: %d\n",iRecv);
}
iLen=sizeof(ser);
iRecv =recvfrom(sClient,buf,sizeof(buf),0,(LPSOCKADDR)&ser,&iLen);
if(iRecv == 0)
return -1;
else if(iRecv == SOCKET_ERROR)
{
printf("recvfrom() Failed: %d\n",WSAGetLastError());
return -1;
}
else
printf("recvfrom() data from server: %s\n",buf);
shutdown(sClient,SD_BOTH);
closesocket(sClient);
WSACleanup();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -