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

DiyVM:50元/月起-双核,2G内存,50G硬盘,香港/日本/洛杉矶机房

DiyVM是一家比较低调的国人主机商,成立于2009年,提供VPS主机和独立服务器租用等产品,其中VPS基于XEN(HVM)架构,数据中心包括香港沙田、美国洛杉矶和日本大阪等,CN2或者直连线路,支持异地备份与自定义镜像,可提供内网IP。本月商家最高提供5折优惠码,优惠后香港沙田CN2线路VPS最低2GB内存套餐每月仅50元起。香港(CN2)VPSCPU:2cores内存:2GB硬盘:50GB/R...

HostYun 新增美国三网CN2 GIA VPS主机 采用美国原生IP低至月15元

在之前几个月中也有陆续提到两次HostYun主机商,这个商家前身是我们可能有些网友熟悉的主机分享团队的,后来改名称的。目前这个品牌主营低价便宜VPS主机,这次有可以看到推出廉价版本的美国CN2 GIA VPS主机,月费地址15元,适合有需要入门级且需要便宜的用户。第一、廉价版美国CN2 GIA VPS主机方案我们可看到这个类型的VPS目前三网都走CN2 GIA网络,而且是原生IP。根据信息可能后续...

RAKsmart美国洛杉矶独立服务器 E3-1230 16GB内存 限时促销月$76

RAKsmart 商家我们应该较多的熟悉的,主营独立服务器和站群服务器业务。从去年开始有陆续的新增多个机房,包含韩国、日本、中国香港等。虽然他们家也有VPS主机,但是好像不是特别的重视,价格上特价的时候也是比较便宜的1.99美元月付(年中活动有促销)。不过他们的重点还是独立服务器,毕竟在这个产业中利润率较大。正如上面的Megalayer商家的美国服务器活动,这个同学有需要独立服务器,这里我一并整理...

socket编程实例为你推荐
匹配函数Excel中vlookup函数数据匹配怎么用webproxy无法连接Internet是什么原因数据监测监测局是做什么的?awvawv转换器哪里下?assemblyinfoasp.net这几个文件是干什么的?jstz泰州哪里有民工市场jstz举手望,草上马跑,打什么数字?jstz谁有101网校的账号?数据统计分析表怎样建立数据透视表和数据分析表?数据统计分析表如何用Excel做数据分析?
四川虚拟主机 ip反查域名 cn域名 网游服务器租用 台湾服务器 优惠码 国外空间服务商 警告本网站美国保护 softbank邮箱 域名评估 海外空间 下载速度测试 锐速 九零网络 sonya asp简介 建站行业 asp.net虚拟主机 域名商城 主机配置 更多