socket编程实例C语言socket编程实现网络数据传输
socket编程实例 时间:2021-06-09 阅读:(
)
列举十个跟socket编程相关的类
先运行服务器端类,然后再运行客户端类,就可以了/***服务器端类*/lassServer{publicstaticvoidmain(String[]args)throwsIOException{Serverserver=newServer();server.start();}publicvoidstart()throwsIOException{//ServerSocket对当前服务器的服务端口的绑定//这个端口号不能重复绑定,不能同时执行两边ServerSocketss=newServerSocket(8888);while(true){//ept开始等待(IOBlock)客户连接(启动监听),如果没有客户端连接,一直挂起等待下去。
//如果有客户端连接,才会继续执行下去,返回的Socket实例s代表对于客户端连接。
Sockets=ept();//创建并启动客户服务线程,为客户服务//当前线程再次返回到ept等待,下一个客户连接newService(s).start();//创建线程}}classServiceextendsThread{Sockets;publicService(Sockets){this.s=s;}publicvoidrun(){try{//s代表客户端//s中的in代表从客户传递过来的流//s中的out代表从服务器到客户端传输流InputStreamin=s.getInputStream();Scannersc=newScanner(in);//System.in是操作系统后台OutputStreamout=s.getOutputStream();//out.write("您好!您需要点啥?
".getBytes("GBK"));//out.flush();//清理缓冲,确保发送到客户端while(true){Stringstr=sc.nextLine();//IOBlockif(str.equals("连接服务器")){out.write("连接成功!
".getBytes("GBK"));out.flush();break;}}}catch(IOExceptione){e.printStackTrace();}}}}/***客户端类*/lassClient{publicstaticvoidmain(String[]args)throwsIOException{//newSocket()连接到指定的服务器端口,当前用的是本机的端口Sockets=newSocket("localhost",8888);//返回s代表连接到了服务器//s代表对服务器的连接InputStreamin=s.getInputStream();OutputStreamout=s.getOutputStream();out.write("连接服务器
".getBytes("gbk"));out.flush();//清理缓冲,确保发送到服务端Scannersc=newScanner(in);Stringstr=sc.nextLine();System.out.println(str);//把从服务器返回的信息,打印到控制台。
out.flush();}}C语言socket编程
这不是很简单,加个
在send前面加个
char password[20]="12345"
printf("please enter the password:");
scanf("%s",importpassword);
if(0==strcmp(password,importpassword))
{
连接。
。
。
send();
}
else 退出。
或者这里还可以写个循环输入也可
如果需要用户名就麻烦多了。
不多说了,求采纳,有问必答C++ socket程序的编写
1.简单服务器
//#include <winsock2.h>
//#ment(lib,"WS2_32.lib")
WSADATA wsd;
static UINT port=%%1;
UINT Listen(LPVOID pParam)
{
SOCKET sServer,sClient;
char buf[1024];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN addrServ;
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons((short)pParam);
addrServ.sin_addr.s_addr=INADDR_ANY;
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//绑定套接字失败
}
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//开始监听失败
}
sockaddr_in addrClient;
int addrClientlen=sizeof(addrClient);
sClient=ept(sServer,(sockaddr FAR*)&addrClient,&addrClientlen);
if(INVALID_SOCKET==sClient)
{
closesocket(sServer);
WSACleanup();
return -1;//开始接受客户端连接失败
}
ZeroMemory(buf,sizeof(buf));
retVal=recv(sClient,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return -1;//接收数据失败
}
CString %%2(buf);
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return 0;
}
CWinThread *pThread=AfxBeginThread(Listen,&port);
2.简单客户端
//#include <winsock2.h>
//#ment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET sHost;
SOCKADDR_IN servAddr;
char buf[1024];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sHost)
{
WSACleanup();
return -1;//创建套接字失败
}
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=_addr(%%3);
servAddr.sin_port=htons((short)%%2);
int nServAddlen=sizeof(servAddr);
retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));
if(SOCKET_ERROR==retVal) {
closesocket(sHost);
WSACleanup();
return -1;//连接服务器失败
}
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
retVal=send(sHost,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//向服务器发送数据失败
}
closesocket(sHost);
WSACleanup();
3.获得本机IP
//#include <winsock2.h>
//#ment(lib,"WS2_32.lib")
WSADATA wsd;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
char szHostname[100],szHostaddress[200];
if(gethostname(szHostname,sizeof(szHostname))!=SOCKET_ERROR)
{
HOSTENT *pHostEnt=gethostbyname(szHostname);
if(pHostEnt!=NULL){
sprintf(szHostaddress,"%d.%d.%d.%d",
( pHostEnt->h_addr_list[0][0]&0x00ff ),
( pHostEnt->h_addr_list[0][1]&0x00ff ),
( pHostEnt->h_addr_list[0][2]&0x00ff ),
( pHostEnt->h_addr_list[0][3]&0x00ff ));
}
}
else
return;
CString %%1(szHostaddress);
4.端对端通信
//#include <winsock2.h>
//#ment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//绑定套接字失败
}
int nServAddrlen=sizeof(servAddr);
ZeroMemory(buf,sizeof(buf));
if(recvfrom(s,buf,sizeof(buf),0,(SOCKADDR*)&servAddr,&nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//接收数据失败
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
SOCKADDR_IN clientAddr;
clientAddr.sin_family=AF_INET;
clientAddr.sin_addr.s_addr=_addr(%%4);
clientAddr.sin_port=htons((short)%%5);
int nClientlen=sizeof(clientAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//向服务器发送数据失败
}
closesocket(s);
WSACleanup();
5.点对点通信
//#include <winsock2.h>
//#ment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKADDR_IN addrServ,addrServ2;
SOCKET sServer,sClient,sHost;
int retVal;
sockaddr_in addrClient;
char buf[1024];
static UINT port=%%2;
BOOL listenerRun=TRUE;
UINT Listen(LPVOID pParam)
{
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons((UINT)pParam);
addrServ.sin_addr.s_addr=INADDR_ANY;
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//绑定套接字失败
}
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//开始监听失败
}
int addrClientlen=sizeof(addrClient);
sClient=ept(sServer,(sockaddr FAR*)&addrClient,&addClientlen);
if(INVALID_SOCKET==sClient)
{
closesocket(sServer);
WSACleanup();
return -1;//接收客户端请求失败
}
while(listenerRun)
{
ZeroMemory(buf,sizeof(buf));
retVal=recv(sClient,buf,sizeof(buf));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return -1;//接收客户端数据失败
}
CString %%4(buf);
}
}
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
WSACleanup();
return -1;//创建套接字失败
}
CWinThread *pThread=AfxBeginThread(Listen,&port);
sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sHost)
{
WSACleanup();
return -1;//创建套接字失败
}
servAddr2.sin_family=AF_INET;
servAddr2.sin_addr.s_addr=_addr(%%1);
servAddr.sin_port=htons((short)%%3);
int nServerAddrlen=sizeof(servAddr2);
retVal=connect(sHost,(LPSOCKADDR)&servAddr2,sizeof(servAddr2));
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//连接失败
}
zeroMemory(buf,sizeof(buf));
strcpy(buf,%%5);
retVal=send(sHost,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//向发送数据失败
}
listenerRun=FALSE;
DWORD dwExitCode;
::GetExitCodeThread(pThread->m_hThread,&dwExitCode);
pThread=null;
closesocket(sServer);
closesocket(sClient);
closesocket(sHost);
WSACleanup();Socket 通信编程
服务器
package Test;
import .*;
import java.io.*;
public class KKMultiServer {
private Socket socket=null;
private ServerSocket ss;
String ip="192.168.1.182";
int port =8001;
Thread trd=null;
public void Start()
{
try {
ss=new ServerSocket(port,20,Address.getByName(ip));
System.out.println("服务器建立等待用户连接!");
while(true)
{
socket=ept();
System.out.println("用户连接成功");
trd=new Thread(new GuestServer(socket));
trd.start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String args[])
{
new KKMultiServer().Start();
}
}C语言socket编程实现网络数据传输
仅供参考
// serverTCP.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
using namespace std;
long t = 0;
void transFile(SOCKET s)
{
printf("新子服务%d......"t);
send(s,"e to TCP FILE SERVER !",strlen("e to TCP FILE SERVER !")+1,0);
char Buf[BUFSIZE];
FILE *fp;
//printf("客户端已打开
请输入存放文件地址:
");
char FilePath[128]={"0"};
t,FilePath,10);
if((fp=fopen(FilePath,"wb"))==NULL)
{
printf("文件未打开
");
return;
}
else
{
send(s,"开始传送",strlen("开始传送")+1,0);
//得到文件大小
char Size[20];
long int FileSize=0;
recv(s,Size,21,0);
FileSize=atol(Size);
printf("得到文件大小: %d
",FileSize);
//开始传送
char Block[BUFSIZE];
long int x=0;
while (1)
{
x += BUFSIZE;
if(x < FileSize)
{
recv(s,Block,BUFSIZE+1,0);
fwrite(Block,1,BUFSIZE,fp);
}
else
{
recv(s,Block,FileSize+BUFSIZE-x+1,0);
printf("文件接收完毕
");
fwrite(Block,1,FileSize+BUFSIZE-x,fp);
fclose(fp);
break;
}
}
}
fclose(fp);
closesocket(s);
}
int _tmain(int argc, _TCHAR* argv[])
{
WORD myVersionRequest;
WSADATA wsaData;
myVersionRequest=MAKEWORD(1,1);
int err;
err = WSAStartup(myVersionRequest,&wsaData);
if (!err)
{
printf("服务器启动......
");
}
else
{
printf("服务器启动失败!");
exit(0);
}
SOCKET serSocket = socket(AF_INET,SOCK_STREAM,0);//创建了可识别套接字
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址
addr.sin_port=htons(PORTBASE);//绑定端口
bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成
listen(serSocket,ACESIZE);//其中第二个参数代表能够接收的最多的连接数
SOCKADDR_IN clientAddr;
int len = sizeof(SOCKADDR);
while(1)
{
t++;
SOCKET serConn;
serConn = ept(serSocket,(SOCKADDR*)&clientAddr,&len);//如果这里不是ept而是conection的话。
。
就会不断的监听
if(_beginthread((void (*)(void *))transFile, ACESIZE,(void *)serConn) < 0) return 0;
}
return 0;
}
// clientTCP.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
WORD myVersionRequest;
WSADATA wsaData;
myVersionRequest=MAKEWORD(1,1);
int err;
err=WSAStartup(myVersionRequest,&wsaData);
if (!err)
{
printf("已打开套接字
");
}
else
{
//进一步绑定套接字
printf("套接字未打开!");
return 0;
}
SOCKET cliSocket =socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr;
char ip_addr[16]={"127.0.0.1"};
addr.sin_addr.S_un.S_addr=_addr(ip_addr);
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
char ACK[64];
connect(cliSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//开始连接
recv(cliSocket,ACK,sizeof(ACK),0);
printf("%s
",ACK);
FILE *fp;
int FileSize=0;
char Block[BUFSIZE]={"0"};
char FilePath[128]={"0"};
int i=0;
do
{
printf("请输入文件地址:
");
gets(FilePath);
i = 0;
if((fp=fopen(FilePath,"rb"))==NULL)
{
i = 1;
printf("文件打开失败
");
}
}while(i);
fseek(fp,0L,SEEK_END);
FileSize=ftell(fp);
printf("待传送文件大小: %d
",FileSize);
printf("等待服务器接受......
");
recv(cliSocket,Block,sizeof(Block),0);
printf("%s
",Block);
if(strcmp(Block,"开始传送")==0)
{
char Size[20];
ltoa(FileSize,Size,10);
send(cliSocket,Size,sizeof(Size),0);
fseek(fp,0L,SEEK_SET);
long int y=0;
char trans[BUFSIZE];
while(!feof(fp))
{
fread(trans,1,BUFSIZE,fp);
y=y+BUFSIZE;
if(y<FileSize)
{
send(cliSocket,trans,BUFSIZE+1,0);
}
else
{
send(cliSocket,trans,FileSize+BUFSIZE-y+1,0);
closesocket(cliSocket);
WSACleanup();
}
}
}
printf("文件发送完毕
");
fclose(fp);
closesocket(cliSocket);
WSACleanup();
system("pause");
return 0;
}
2022年春节假期陆续结束,根据惯例在春节之后各大云服务商会继续开始一年的促销活动。今年二月中旬会开启新春采购季的活动,我们已经看到腾讯云商家在春节期间已经有预告活动。当时已经看到有抢先优惠促销活动,目前我们企业和个人可以领取腾讯云代金券满减活动,以及企业用户可以领取域名优惠低至.COM域名1元。 直达链接 - 腾讯云新春采购活动抢先看活动时间:2022年1月20日至2022年2月15日我们可以在...
CloudCone商家我们很多喜欢低价便宜VPS主机的肯定是熟悉的,个人不是特别喜欢他。因为我之前测试过几次,开通的机器IP都是不通的,需要删除且开通好几次才能得到一个可用的IP地址。当然他们家的优势也是有的,就是价格确实便宜,而且还支持删除重新开通,而且机房只有一个洛杉矶MC。实话,如果他们家能多几个机房,保持现在的特点,还是有很多市场的。CloudCone是来自美国的主机销售商,成立于2017...
TabbyCloud迎来一周岁的生日啦!在这一年里,感谢您包容我们的不足和缺点,在您的理解与建议下我们也在不断改变与成长。为庆祝TabbyCloud运营一周年和七夕节,TabbyCloud推出以下活动。TabbyCloud周年庆&七夕节活动官方网站:https://tabbycloud.com/香港CN2: https://tabbycloud.com/cart.php?gid=16购买链...
socket编程实例为你推荐
ostringstreamC++中ostringstream和ostream有什么区别,菜鸟求问at89s52单片机有谁知道单片机如AT89c52,AT89s52具体是指什么含义啊?eagleeye电脑进程中出现Eaglesvr这种程序,据说是一种蠕虫病毒。。。怎样杀掉?小四号字word里的小四号字在Photoshop里是指多少点字体?12种颜色十二种颜色的英文怎么读?防火墙排名什么防火墙最好印度尼西亚国家代码印尼身份证号的编码规则是什么?(比如中国的1-6位是地址代码,7-14位是出生日期码等)印度尼西亚国家代码国际代码腾讯技术腾讯简介----云计划云计划创富平台怎么样?有谁知道。介绍一下。
虚拟主机测评 花生壳域名 上海服务器租用 cn域名价格 韩国vps 欧洲欧洲vps 已备案域名出售 budgetvm 老左 亚洲大于500m 星星海 hawkhost googleapps nerd 60g硬盘 patcha 个人免费空间 稳定免费空间 美国免费空间 网站在线扫描 更多