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. 如何使用 Bootstrap 搭建更合理的 HTML 结构

    前言 Bootstrap 的成功不仅在于其简单易用,更在于其样式的规范性以及 HTML 结构的合理性.但是很多人在使用 Bootstrap 时只是依照文档盲目的复制黏贴,并没有仔细考虑每个类的用处,也 ...

  2. Eclipse多平台编译(armeabi, armeabi-v7a, x86, mips)

    Jni目录下新增Application.mk,加入 APP_ABI := armeabi armeabi-v7a x86 mips 上面的平台可加可减,全编的话可以写为 APP_ABI := all ...

  3. Selenium_WebDriver_控制浏览器

    版权声明:本文为博主原创文章,转载请注明出处.  浏览器环境: ①GoogleChrome:60 ②chromedriver:2.30: 访问 操作 方法 示例 访问页面 void get(java. ...

  4. 嵌入式linux系统的构建

    前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍 b.开发板可以pc,linux 三者可以互相ping通 c.配置好nfs服务器:同样在嵌入式的童年中有介绍 一.嵌入式linux内核的制作( ...

  5. LeetCode - 540. Single Element in a Sorted Array

    Given a sorted array consisting of only integers where every element appears twice except for one el ...

  6. iOS图片轮播

    基于ScrollView的图片播放 ScrollView的方法 NSTime的循环 UIPageControl的运用 委托方法 基于iphone5 未做屏幕的适配 import "ViewC ...

  7. zabbix 网络模板自动发现端口时,过滤掉某些特定规则的端口,减少item的方法

    1.需求描述        默认情况下Zabbix 模板 中网络接口自动发现接口时,会产生很多item,有时候会有我们不需要的一些接口,这时候需要过滤掉他们.        比如我有一台运行kvm的服 ...

  8. 恢复linux系统文件夹颜色

    /etc/DIR_COLORS 默认值 # Background color codes:# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta ...

  9. Js比较对Object类型进行排序

    <script> var data=[{name:"121",age:"18",year:"2018"},{name:" ...

  10. 判断json是否包含了每个键 PHP

    (1)可以用array_key_exists去判断object对象或array数组中是否含有某个键: (2)不可以用isset去判断判断object对象或array数组中是否含有某个键 $decode ...