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年最新PHP短网址生成系统/短链接生成系统/URL缩短器系统源码

全新PHP短网址系统URL缩短器平台,它使您可以轻松地缩短链接,根据受众群体的位置或平台来定位受众,并为缩短的链接提供分析见解。系统使用了Laravel框架编写,前后台双语言使用,可以设置多域名,还可以开设套餐等诸多功能,值得使用。链接: https://pan.baidu.com/s/1ti6XqJ22tp1ULTJw7kYHog?pwd=sarg 提取码: sarg文件解压密码 www.wn7...

WHloud Date鲸云数据($9.00/月), 韩国,日本,香港

WHloud Date(鲸云数据),原做大数据和软件开发的团队,现在转变成云计算服务,面对海内外用户提供中国大陆,韩国,日本,香港等多个地方节点服务。24*7小时的在线支持,较为全面的虚拟化构架以及全方面的技术支持!官方网站:https://www.whloud.com/WHloud Date 韩国BGP云主机少量补货随时可以开通,随时可以用,两小时内提交退款,可在工作日期间全额原路返回!支持pa...

老薛主机入门建站月付34/月,年付345元,半价香港VPS主机

老薛主机怎么样?老薛主机这个商家有存在有一些年头。如果没有记错的话,早年老薛主机是做虚拟主机业务的,还算不错在异常激烈的市场中生存到现在,应该算是在众多商家中早期积累到一定的用户群的,主打小众个人网站业务所以能持续到现在。这不,站长看到商家有在进行夏季促销,比如我们很多网友可能有需要的香港vps主机季度及以上可以半价优惠,如果有在选择不同主机商的香港机房的可以看看老薛主机商家的香港vps。点击进入...

socket编程实例为你推荐
csonline2反恐精英online2什么时候出cpu监控CPU检测软件有哪些 5款CPU检测工具介绍 (企业资源管理系统企业管理系统都有什么功能知识分享平台全国知识共享的平台有哪些?腾讯汽车网可以了解汽车知识的权威网站大概有哪些网络审计什么叫网络会计师事务所数据统计分析表怎样建立数据透视表和数据分析表?单元测试规范如何做好小学数学单元测试工作文本框透明word里文本框怎么透明?activitygroupTabHost ActivityGroup里面activity里的webview是不是不支持一些JS比如 alert?
如何申请免费域名 免费域名跳转 中文域名交易中心 com域名抢注 主机优惠码 greengeeks idc评测 vpsio 博客主机 国外空间服务商 dux 网站cdn加速 100m空间 phpmyadmin配置 卡巴斯基破解版 银盘服务 web服务器搭建 云营销系统 net空间 中国电信测速网站 更多