TCP/IP

资源:http://download.csdn.net/detail/mao0514/9061265

server:

#include<stdio.h>
#include<winsock2.h>

void main()
{
	SOCKET servsock,clisock;
	struct sockaddr_in sa;
	struct sockaddr_in cliaddr;
	int servport=6666;
	char buff[256];
	WSADATA ws;
	int len,err;
	// 初始化Winsock
	if(WSAStartup(0x0101,&ws)!=0)
	{
		printf("WSAStartup() failed!\n");
		return;
	}
	//创建套接字
	printf("Create Socket...\n");
	servsock=socket(AF_INET,SOCK_STREAM,0);
	//填充服务器地址结构
	memset(&sa,0,sizeof(sa));
	sa.sin_family=AF_INET;
	sa.sin_port=htons(servport);
	sa.sin_addr.s_addr=inet_addr("192.168.1.100");
	//sa.sin_addr.s_addr=inet_addr("127.0.0.1");

	//绑定套接字到服务器地址结构
	printf("Binding...\n");
	err=bind(servsock,(const sockaddr *)&sa,sizeof(sa));
	if(err!=0)
	{
		fprintf(stderr,"Bind failed:%d\n",WSAGetLastError());
		return;
	}

	//监听套接字
	printf("Listening...\n");
	err=listen(servsock,5);
	if(err!=0)
	{
		fprintf(stderr,"Listen failed:%d\n",WSAGetLastError());
		return;
	}

	//等待连接请求
	printf("Waitting Request...\n");
	len=sizeof(cliaddr);
	clisock=accept(servsock,(struct sockaddr *)&cliaddr,&len);

	len=recv(clisock,buff,sizeof(buff),0);
	if(len>0)
	{
		buff[len]=0;
	       printf("%s\n",buff);
	}

	printf("Accept Client:%s:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
	sprintf(buff,"Welcome you %s",inet_ntoa(cliaddr.sin_addr));

	//发送欢迎词
    send(clisock,buff,strlen(buff),0);
    Sleep(1000);

//	recv(clisock,buff,strlen(buff),0);
 //   printf("%s\n",buff);

	//关闭连接
    closesocket(clisock);
    closesocket(servsock);
    WSACleanup();
}

client:

#include<winsock2.h>
void main()
{
	SOCKET sock;
	struct sockaddr_in sa;
	int err;
	int servport=6666;
	char buff[256];
	int len;
	WSADATA ws;

	// 初始化Winsock
	if(WSAStartup(0x0101,&ws)!=0)
	{
		printf("WSAStartup() failed!\n");
		return;
	}
	//创建套接字
	sock=socket(AF_INET,SOCK_STREAM,0);

	//定义服务器地址结构
	memset(&sa,0,sizeof(sa));
	sa.sin_family=AF_INET;
	sa.sin_port=htons(servport);
	sa.sin_addr.s_addr=inet_addr("192.168.1.100");

	// 连接服务器
	err=connect(sock,(const sockaddr*)&sa,sizeof(sa));
  //  printf("test1");
	while(1)
	{
	//	printf("test1");
		fgets(buff,256,stdin);
	//	for(int i=0;i<100;i++)
		send(sock,buff,strlen(buff),0);
		if(strncmp(buff,"exit",4)==0) break;
		len=recv(sock,buff,sizeof(buff),0);
		if(len>0)
		{
			buff[len]=0;
	       printf("%s\n",buff);
		}
	}

	//接收欢迎词
	memset(buff,0,sizeof(buff));
	len=recv(sock,buff,sizeof(buff),0);

	printf("%s\n",buff);
	//关闭连接
	closesocket(sock);
	WSACleanup();
}

UDP:

#include<stdlib.h>
#include<string.h>
#include<winsock2.h>

#define BUFSIZE 256

void main(void)
{
/////////////////////////初始化/////////////////////
	WSADATA wsaData;
	WSAStartup(0x0202,&wsaData);
	SOCKET m_socket;
	m_socket=socket(AF_INET,SOCK_DGRAM,0);
	if(INVALID_SOCKET==m_socket)
	{
		printf("套接字创建失败!");
		return;
	}
	SOCKADDR_IN addrSock;
	addrSock.sin_family=AF_INET;
	addrSock.sin_port=htons(6000);
	addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

	int retval;
	retval=bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));
	if(SOCKET_ERROR==retval)
	{
		closesocket(m_socket);
		printf("绑定失败!");
	}
/////////////////接收///////////////////////////
	SOCKADDR_IN addrFrom;
	int len=sizeof(SOCKADDR),len2;

	char recvBuf[200];
	char tempBuf[300];
	SOCKADDR_IN addrTo;
	addrTo.sin_family=AF_INET;
	addrTo.sin_port=htons(6001);
	addrTo.sin_addr.S_un.S_addr=inet_addr("192.168.1.100");
	while(TRUE)
	{
		retval=recvfrom(m_socket,recvBuf,200,0,(SOCKADDR*)&addrFrom,&len);
		if(SOCKET_ERROR==retval)
			break;
		for (int i=0; i<len; i++)
		{
			recvBuf[i] = toupper(recvBuf[i]);
		}
		printf(recvBuf);

		///////////////////////发送//////////////////////////
		len2 = strlen(recvBuf);
		sendto(m_socket,recvBuf,len2+1,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR));

	}

    //关闭socket
	closesocket(m_socket);
	WSACleanup();
	exit(0);
}
//2
#include<stdlib.h>
#include<string.h>
#include<winsock2.h>

#define BUFSIZE 256

void main(void)
{

	WSADATA wsaData;
	WSAStartup(0x0202,&wsaData);
	SOCKET m_socket;
	m_socket=socket(AF_INET,SOCK_DGRAM,0);
	if(INVALID_SOCKET==m_socket)
	{
		printf("套接字创建失败!");
	}
	SOCKADDR_IN addrSock;
	addrSock.sin_family=AF_INET;
	addrSock.sin_port=htons(6001);
	addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

	int retval;
	retval=bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR));
	if(SOCKET_ERROR==retval)
	{
		closesocket(m_socket);
		printf("绑定失败!");
	}
	/////////////////接收///////////////////////////
	SOCKADDR_IN addrFrom;
	int len=sizeof(SOCKADDR),len2;

	char recvBuf[200];
	char tempBuf[300];
	SOCKADDR_IN addrTo;
	addrTo.sin_family=AF_INET;
	addrTo.sin_port=htons(6000);
		addrTo.sin_addr.S_un.S_addr=inet_addr("192.168.1.100");
	while(TRUE)
	{
       // scanf("%s",recvBuf);
		fgets(recvBuf,256,stdin);
		///////////////////////发送//////////////////////////
		len2 = strlen(recvBuf);
		sendto(m_socket,recvBuf,len2+1,0,
			(SOCKADDR*)&addrTo,sizeof(SOCKADDR));
		Sleep(1000);
		////////////////接收/////////////////////////////////
		retval=recvfrom(m_socket,recvBuf,200,0,(SOCKADDR*)&addrFrom,&len);
		if(SOCKET_ERROR==retval)
			break;
		printf(recvBuf);
	}
    //关闭socket
	closesocket(m_socket);
	WSACleanup();
	exit(0);
}

SOCKET 编程TCP/IP、UDP的更多相关文章

  1. SOCKET,TCP/IP,UDP,HTTP,FTP总结

    一.TCP/UDP,SOCKET,HTTP,FTP简析   TCP/IP是个协议组(主要解决数据如何在网络中传输),可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议 ...

  2. Python中Socket编程(TCP、UDP)

    1. TCP协议下的如何解决粘包问题 TCP(transport control protocol 传输控制协议)  使用Nagle算法,将多次间隔较小且数据量小的数据,合并成大的数据块:接受端无法识 ...

  3. android 网络编程--socket tcp/ip udp http之间的关系

    网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层,一般编程人员接触最多的就是应用层和运输层,再往下的就是所谓的媒体层了,不是我们研究的对象. 下面是应用层.运输层,网络 ...

  4. 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结

    引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. ...

  5. 聊聊Socket、TCP/IP、HTTP、FTP及网络编程

    1 这些都是什么 既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. 1.1 TCP ...

  6. Socket网络编程(TCP/IP/端口/类)和实例

    Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...

  7. 关于Socket、TCP/IP、HTTP、FTP及网络编程

    来源:陶邦仁 链接:http://blog.jobbole.com/99694/ 既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,再者如何进行可靠高效 ...

  8. 网络通信 --> Socket、TCP/IP、HTTP、FTP及网络编程

    Socket.TCP/IP.HTTP.FTP及网络编程 聊聊Socket.TCP/IP.HTTP.FTP及网络编程

  9. C++网络套接字编程TCP和UDP实例

    原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1.       创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1)  创建套接字(so ...

随机推荐

  1. [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 正则化(regularization) 如果你的神经网络出现了过拟合(训练集与验证集得到的结果方差较大),最先想到的方法就是正则化(re ...

  2. spring之setter注入

    setter注入分为2种 第一:普通属性注入 <bean id="userAction" class="com.xx.action.UserAction" ...

  3. JAVA动态代理机制解析

    1. 概述 首先,我们来思考如下两个问题: 什么是代理模式?为什么要使用代理模式? 简单总结一下,所谓的代理模式就是在原有的服务上多加一个占位,通过这个占位去控制服务的访问.通过代理模式,一方面可以控 ...

  4. Storm 对 0.10.x 版 Kafka之commit offsets

    由于 0.10.x 版 Kafka 与 0.8.x 版有很大的变化,这种变化对下游 Storm 有非常大的影响,0.10.x 版的 Kafka 不但增加了权限管理的功能,而且还将 simple 和 h ...

  5. My Calendar III

    class MyCalendarThree(object): """ Implement a MyCalendarThree class to store your ev ...

  6. ABP官方文档翻译 4.6 审计日志

    审计日志 介绍 关于IAuditingStore 配置 通过特性启用/禁用 注意事项 介绍 维基百科:“审计追踪(也称为审计日志)是与安全相关的按时间先后的记录.记录集合.记录的目的地和源,提供一系列 ...

  7. 最大流模版 EK

    EK算法基于增广路的思想,易于理解,但由于低效并不被经常使用 #include <iostream> #include <cstdio> #include <algori ...

  8. BZOJ 3879: SvT [虚树 后缀树]

    传送门 题意: 多次询问,给出一些后缀,求两两之间$LCP$之和 哈哈哈哈哈哈哈竟然$1A$了,刚才还在想如果写不好这道题下节数学就不上了,看来是上天让我上数学课啊 $Suffix\ Virtual\ ...

  9. ubuntu14.04安装、NVIDIA显卡驱动安装及CUDA8.0、Cudnn5.1的环境搭建

    安装环境:hp-Z440工作站.64位Ubuntu14.04(64位Ubuntu16.04).Cuda8.0.Cudnn5.1.Nvidia GeForce GT 705.Tesla K40c 本文可 ...

  10. Vs Code JavaScript开发插件推荐

    1 vscode-icons 使用效果 安装好后如何设置? Ctrl+Shift+P 然后输入theme 2 document this 如何使用? 在方法或者要注释的地方上 按 快捷键 Ctrl + ...