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!
");
return;
}
//创建套接字
printf("Create Socket...
");
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...
");
err=bind(servsock,(const sockaddr *)&sa,sizeof(sa));
if(err!=0)
{
fprintf(stderr,"Bind failed:%d
",WSAGetLastError());
return;
}
//监听套接字
printf("Listening...
");
err=listen(servsock,5);
if(err!=0)
{
fprintf(stderr,"Listen failed:%d
",WSAGetLastError());
return;
}
//等待连接请求
printf("Waitting Request...
");
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
",buff);
}
printf("Accept Client:%s:%d
",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
",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!
");
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
",buff);
}
}
//接收欢迎词
memset(buff,0,sizeof(buff));
len=recv(sock,buff,sizeof(buff),0);
printf("%s
",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);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。