⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unixclient.c

📁 嵌入式VxWorks开发的各种实验源代码以及相关教程
💻 C
字号:
/* unixClient.c - simple UDP demo client */

#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h>



#define MAX_MSG_LEN 80
typedef int SOCK_FD;

void error (char * str);

int main 
	(
	int argc,
	char * argv []
	)
	{
	short port; /* Server's port number */
	int inetAddr; /* Server's IP address */
	struct sockaddr_in srvAddr; /* Server address */
	int val; /* Value to send the server */
	SOCK_FD sockFd; /* Client's socket */
	char replyBuf[MAX_MSG_LEN]; /* Space for reply */


	/*
	 * Get the server port number, inet address, and
	 * value to send
	 */
	if (argc != 4)
		{
		fprintf (stderr, "Usage: %s portNumber "
					"inetAddress value\n", argv[0]);
		exit (1);
		}
	port = (short)atoi(argv[1]);
	inetAddr = inet_addr(argv[2]);
	val = atoi(argv[3]);


	/* Create a socket */
	if ( (sockFd = socket (PF_INET, SOCK_DGRAM,
			IPPROTO_UDP)) < 0)
		error ("socket failed");

	/* Initialize servers address */
	memset ((char *)&srvAddr, 0, sizeof(srvAddr));
	srvAddr.sin_family = AF_INET;
	srvAddr.sin_port = htons(port);
	srvAddr.sin_addr.s_addr = inetAddr;

	/* Send the server the value */

	if (sendto (sockFd, (char *)&val, sizeof(val), 0,
			(struct sockaddr * ) &srvAddr,
			 sizeof(srvAddr)) < 0)
		{
		close (sockFd);
		error ("sendto failed");
		}

	/* 
	 * Read and then print the server's reply.
	 * (We should await the reply with select(), but
	 * instead are lazy here. The client could block
	 * forever in the read() call.)
	 */
	
	if (read (sockFd, replyBuf, MAX_MSG_LEN) < 0)
		{
		close (sockFd);
		error ("read failed");
		}
	printf ("\n%s\n", replyBuf);

	/* Close socket */
	close (sockFd);
	return 0;
	}


void error (char * str)
	{
	perror (str);
	exit (1);
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -