我在C語言中遇到了套接字編程的問題。我有一個應用程序使用C連接函數打開一個套接字,我不想通過套接字進行任何加密。此應用程序還使用openssl庫的函數(用於其他目的),所以我必須在編譯時與lssl鏈接。由於這種鏈接到lssl,應用程序失敗。我不知道發生了什麼事情,是openssl聯繫重寫C的連接或什麼?這是一個正確的方法來使用C的套接字函數以及使用SSL庫嗎?C與ssl連接的應用程序故障
0
A
回答
0
打開socket直到連接的代碼如下。
int memfsnode_init()
{
int sockfd, portno, n,len,i,x,y;
long l;
struct sockaddr_in serv_addr;
portno = METADATASERVER_PORT; //port = 5000
char *serverip;
serverip=(char*)malloc(20*sizeof(char));
strncpy(serverip,"127.0.0.1",strlen("127.0.0.1"));
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(serverip);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)) < 0)
error("ERROR connecting");
return(sockfd);
}
0
strncpy(serverip,"127.0.0.1",strlen("127.0.0.1"));
這是壞了。 strncpy
的最後一個參數應該是緩衝區的大小,而不是要複製的字符串的長度。如果它不是更大的比字符串的長度(它不在這種情況下)會發生不好的事情。作爲strncpy
的文件說:
警告:如果SRC的前n個字節之間沒有空字節,放入dest字符串不會是空值終止。
相關問題
- 1. 與Prime連接故障
- 2. C++程序故障?
- 3. iOS應用程序故障
- 4. 我的C程序中的Mysql連接故障(Bad handshake)
- 5. 貸款接口c程序故障#
- 6. 與PostgreSQL數據庫故障的連接
- 7. Smack與服務器故障的連接
- 8. IB中的連接故障
- 9. SQLite的PHP連接故障
- 10. .NET應用程序的故障注入?
- 11. Cydia Repo的應用程序故障
- 12. 分段故障與連接對象
- 13. nodejs MySQL連接與SQLite故障轉移
- 14. Redmine actionmailer ssl故障
- 15. 連接CouchDB與asp.net C#應用程序
- 16. npgsql與ssl中的隨機故障
- 17. mongodb故障轉移連接
- 18. Mysql故障表連接
- 19. Minimax連接4 AI故障
- 20. 連接鏈路故障
- 21. 排除AJAX連接故障
- 22. IPhone應用程序與Java ServerSocket之間的SSL連接
- 23. 故障記錄公式 - 應用程序
- 24. Android:Forceclose應用程序故障後
- 25. iOS SDK 5.0 iPhone應用程序故障
- 26. 應用程序內購買ios故障
- 27. 應用程序崩潰和Seg故障
- 28. Facebook應用程序故障排除
- 29. Rails應用程序Heroku故障
- 30. 空氣應用程序全屏故障
不,OpenSSL不會覆蓋任何C函數。將OpenSSL與未加密的連接相結合沒有問題。問題是別的。 –
失敗如何?出了什麼問題? –
某些錯誤代碼或源代碼可能會幫助我們識別問題。 –