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; }

PQS彼得巧 年中低至38折提供台湾彰化HiNet线路VPS主机 200M带宽

在六月初的时候有介绍过一次来自中国台湾的PQS彼得巧商家(在这里)。商家的特点是有提供台湾彰化HiNet线路VPS主机,起步带宽200M,从带宽速率看是不错的,不过价格也比较贵原价需要300多一个月,是不是很贵?当然懂的人可能会有需要。这次年中促销期间,商家也有提供一定的优惠。比如月付七折,年付达到38折,不过年付价格确实总价格比较高的。第一、商家优惠活动年付三八折优惠:PQS2021-618-C...

舍利云30元/月起;美国CERA云服务器,原生ip,低至28元/月起

目前舍利云服务器的主要特色是适合seo和建站,性价比方面非常不错,舍利云的产品以BGP线路速度优质稳定而著称,对于产品的线路和带宽有着极其严格的讲究,这主要表现在其对母鸡的超售有严格的管控,与此同时舍利云也尽心尽力为用户提供完美服务。目前,香港cn2云服务器,5M/10M带宽,价格低至30元/月,可试用1天;;美国cera云服务器,原生ip,低至28元/月起。一、香港CN2云服务器香港CN2精品线...

百纵科技:美国独立服务器租用/高配置;E52670/32G内存/512G SSD/4IP/50M带宽,999元/月

百纵科技怎么样?百纵科技国人商家,ISP ICP 电信增值许可证的正规公司,近期上线美国C3机房洛杉矶独立服务器,大带宽/高配置多ip站群服务器。百纵科技拥有专业技术售后团队,机器支持自动化,自助安装系统 重启,开机交付时间 30分钟内交付!美国洛杉矶高防服务器配置特点: 硬件配置高 线路稳定 洛杉矶C3机房等级T4 平价销售,支持免费测试,美国独服适合做站,满意付款。点击进入:百纵科技官方网站地...

socket编程实例为你推荐
草莓派怎么做草莓派?华为总裁女儿为啥姓孟孟姜女为什么不姓孟?国产操作系统下载国产操作系统要钱吗assemblyinfoLOL的 X、L、CS 是什么意思什么是生态系统生态系统的基础是什么?网站建立需要多少钱创立网站要多少钱维基百科中文网站科普网页最大的谁有中信银行理财宝中信银行香卡属于理财宝吗?上传图片网站速度超快的上传图片网站点心os现有的基于安卓深度优化的MUUI、点心OS、CM7、乐众ROM、乐蛙,这些哪个好?各自特点?给个排名。
域名是什么 yaokan永久域名经常更换 mach 免备案cdn realvnc asp免费空间申请 699美元 qq对话框 免费网页空间 申请网站 web服务器是什么 秒杀品 个人免费邮箱 腾讯数据库 杭州电信宽带 双十二促销 腾讯云平台 windowsserver2008r2 中美互联网论坛 海外加速 更多